一个Perl文本处理实例

假设存在file1, file2两个文本文件, 文件每行格式为:
| .* | .*;
要求:求出所有在file2文件中出现的行, 且仅保留双"|"之间的内容。
如: 若存在 |adfdf| dofijaosdjioaf 于file2, file1中不存在该项,则该返回 |adfdf|

参考例程:
#!/usr/bin/perl
use strict;
use warnings;

die "lack compare file/n" if(@ARGV < 2);
my ($file1, $file2) = ($ARGV[0], $ARGV[1]);
my $outfile = "result.out"; # storage result

#-------- format the input file into like this :  |.*|
$^I = ".bak";   # make a copy
while(<>)
{
   s/[^|]*$//;
   print;
   print "/n";
}
#-----------

system "diff $file1 $file2 > temp.out";
open TEMP, "<temp.out" or die "Can not open temporary file/n";
open OUT, ">$outfile" or die "Can not open file:$outfile/n";

my $count=0;
while(<TEMP>)
{
        chomp;
        if(//>(.*)/)
        {
            $count++;
            print OUT "$1/n";
        }
}
print OUT "total sums = $count/n";
close TEMP;
unlink "temp.out";
close OUT;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值