Perl合并文本的一段实例代码

有这样一个文本文件,内容有多行如下,数量不定。
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#footer_win {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('.mainad {display:none;}');};
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('.mt5.recommend {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggAD {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggSideBox {display:none;}');};
…………
要求合并为:
Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead, #footer_win, .mainad, .mt5.recommend {display:none;}');};
Lif(__amscript_cd("jbxue.net")){__amscript_wc('.ggAD, .ggSideBox {display:none;}');};

思路:可以将url视为key,而将合并的字符串视为value,这样存储下来,在打印即可。只是打印的时候有点麻烦,因为这个字符串里面包含了单引号,双引号,小括弧和花括弧,用q##做为字符串界定符即可。

代码如下:

#!/usr/bin/perl
use strict;
use warnings;
sub test {
    my %comments_of_url = ();
    open FILE, "<D:/Codesnippets/Perl/abc.txt" or die $!;
    while (<FILE>) {
        # Skip empty lines
        next if /^\s*$/;
        # Use url as key and #xxx as value for each line
        # Merge all the #xxx for a url
        if (/amscript_cd\("(.*?)"\)\){__amscript_wc\('(.*?)\s+\{/) {
            $comments_of_url{ $1 } .= ( $2 . ',' );
        }           
    }
    foreach my $key (keys %comments_of_url) {
        chomp (my $value = $comments_of_url{$key});
        print q{Lif(__amscript_cd("};
        print $key;
        print q#")){__amscript_wc('#;
        print $value;
        print q#{display:none;}');};#;
        print "\n";
    }
}
sub main {
    &test();
}
&main();

(0)

相关推荐

  • Perl 文本文件的读写操作、文件的重命名和删除、多个文本文件的合并实现代码

    读文件: 复制代码 代码如下: #!perlopen filetxt,"/path/a.txt";   #  filetxt为文件句柄,用于和文件a.txt建立链接.文件句柄可任意取名,但不要和Perl自带的几个文件句柄重名.print <filetxt>;                 #  此处print函数用于显示文件a.txt的内容.<>为取行操作符,<文件句柄>用于读取所链接文件的内容.close filetxt;            

  • Perl合并文本的一段实例代码

    有这样一个文本文件,内容有多行如下,数量不定.Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead {display:none;}');};Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#footer_win {display:none;}');};Lif(__amscript_cd("www.jb51.net")){__amsc

  • python动态文本进度条的实例代码

    如何实现动态单行刷新,答案是--覆盖 但是怎么实现覆盖呢 关键在于不换行而且能回退到开始位置 那么就要用到 \r 这个东西就是让光标回退到当前行初始位置 记得不能让换行 上码 #文本进度条.py import time scale = 50 print("执行开始".center(scale, "-"))//居中对齐 start = time.perf_counter()//获取起始时间 for i in range(scale+1): a = i*'*' b =

  • Delphi实现图像文本旋转特效完整实例代码

    本文以实例讲述了Delphi实现图像文本旋转特效的解决方法,在本程序中利用的控件主要是Panel 控件.Image 控件.Edit 控件.Label 控件和Button 控件.本程序的关键是利用Delphi 的bmp_rotate()函数来实现旋转图像的功能.并巧妙地调用相关Windows API 函数来实现对文本的旋转特效. 完整的实例代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics,

  • 用Perl操作Excel文档的实例代码

    在Linux或者Unix上操作(生成)Excel,CPAN上提供了Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel这两个模块. 下面就来看看 Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel的使用方法. 首先,要在服务器上安装相应的模块. 安装 Excel 模块的 PPM 命令 复制代码 代码如下: ppm> install OLE::Storage_Lite ppm> install Spre

  • perl获取日期与时间的实例代码

    注意:localtime获取的年份是相对于1900的偏移,需要加上1900,而localtime获取的month范围是0-11,需要加1. 复制代码 代码如下: #!/usr/bin/perlmy ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime();    $year += 1900;    $mon++;my $date = "$year-$mon-$day";    print $date, &quo

  • java合并多个文件的实例代码

    在实际项目中,在处理较大的文件时,常常将文件拆分为多个子文件进行处理,最后再合并这些子文件.下面就为各位介绍下Java中合并多个文件的方法. Java中合并子文件最容易想到的就是利用BufferedStream进行读写. 具体的实现方式如下,代码很详细,供各位参考学习. 1.首先创建mergeFiles方法,接收字符串数组和字符串参数,并完成文件合并功能 public static boolean mergeFiles(String[] fpaths, String resultPath) {

  • 如何利用Python获取文本中的电话号码实例代码

    目录 前言 打开文本 正则表达式遍历电话 最后拼接输出 完整的代码↓ 使用方法 补充:使用Python提取电话号码和E-mail地址 结语 前言 此编制利用Python的简单编程,实现获取txt文本里的电话号码. 这里小编使用了Python3.8.6,os.re库 打开文本 #事先新建文本readphone.txt,将要提取的文章内容复制到readphone.txt里. 下方为Python打开文本 TXTtemp = open("readphone.txt","r+"

  • asp OpenTextFile文本读取与写入实例代码

    object.OpenTextFile(filename[, iomode[, create[, format]]])  参数  object :必选项.应为 FileSystemObject 对象的名称.  filename :必选项.字符串表达式,指明要打开的文件名称.  iomode :可选项.输入/输出模式,是下列三个常数之一:ForReading,ForWriting,或 ForAppending.  create :可选项.Boolean 值,指出当指定的 filename 不存在时

  • js实现单行文本向上滚动效果实例代码

    复制代码 代码如下: /***************滚动场次开始*****************/ function ScrollText(content, btnPrevious, btnNext, autoStart) {    this.Delay = 10;    this.LineHeight = 20;    this.Amount = 1;     this.Direction = "up";    this.Timeout = 1500;    this.Scrol

  • js 文本滚动效果的实例代码

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <title> New Document </title> <style type="text/css">  *{marg

随机推荐