如何删除一个文件中与另一个文件相同的部分 perl
如题,perl编程:如果txt1文件中存在txt2文件中的任意一行,那么将txt1文件中的这一行删除,将去除后的文件存放到txt3中?...
如题,perl 编程:如果txt1文件中存在txt2文件中的任意一行,那么将txt1文件中的这一行删除,将去除后的文件存放到txt3中?
展开
2个回答
展开全部
看了你的要求,我尝试做了一下。说下我的思路,先把TXT2的内容按行读入一个数组,然后再把这个数组的元素(也就是每行内容)与txt1的每一行比较,把结果打印出来。如果要存到TXT3,只要用">"符号重定向即可。
代码如下,仅供参考:
#! /usr/bin/perl -w
#txtout.pl
use strict;
my @tmp;
#txt2读入@tmp。
open FD, "txt2"
or die "$!:";
while (<FD>)
{
chomp;
push @tmp, $_ if ($_=~/\S+/);
}
close FD;
for (@tmp)
{
print "$_\n";
}
#对txt1操作。
$^I=".bak";
while(<>)
{
for my $comp (@tmp)
{
s/^$comp//;
}
print;
}
ps:删除后的东西已经在屏幕打印出来,你也可以通过重定向">"输出到txt3中。 运行这个: perl txtout.pl txt1 > txt3 就行了。
注意:我测试过,如果txt2中有"*"号的话则无法输出。这个我还没解决。
代码如下,仅供参考:
#! /usr/bin/perl -w
#txtout.pl
use strict;
my @tmp;
#txt2读入@tmp。
open FD, "txt2"
or die "$!:";
while (<FD>)
{
chomp;
push @tmp, $_ if ($_=~/\S+/);
}
close FD;
for (@tmp)
{
print "$_\n";
}
#对txt1操作。
$^I=".bak";
while(<>)
{
for my $comp (@tmp)
{
s/^$comp//;
}
print;
}
ps:删除后的东西已经在屏幕打印出来,你也可以通过重定向">"输出到txt3中。 运行这个: perl txtout.pl txt1 > txt3 就行了。
注意:我测试过,如果txt2中有"*"号的话则无法输出。这个我还没解决。
参考资料: 原创
展开全部
#!/usr/bin/perl -w
#tt
open T1,"txt1";
open T2,"txt2";
@AT2=<T2>;
foreach my $t (<T1>){
print $t unless grep /^$t/,@AT2;
}
==================================
txt1:
1line 1line 1line
2line 2line 2line
3line 3line 3line
4line 4line 4line
5line 5line
6line 6line 6line
7line 7l
8line 8line 8line
9line 9line 9line
10line 10line 10line
11line 11line 11line
12line 12line 12line
13line 13line 13line
14line 14line 14line
15li
txt2:
1line 1line 1line
3lin
5line 5line 5line
7line 7line 7line 7line
9line 9line 9line
11line 11line 11line
13line 13line 13line
15line 15e 15line
#chmod +x tt
#./tt
2line 2line 2line
3line 3line 3line
4line 4line 4line
5line 5line
6line 6line 6line
7line 7l
8line 8line 8line
10line 10line 10line
12line 12line 12line
14line 14line 14line
15li
将去除后的文件存放到txt3中,只要用">"符号重定向即可。
#./tt>txt3
#tt
open T1,"txt1";
open T2,"txt2";
@AT2=<T2>;
foreach my $t (<T1>){
print $t unless grep /^$t/,@AT2;
}
==================================
txt1:
1line 1line 1line
2line 2line 2line
3line 3line 3line
4line 4line 4line
5line 5line
6line 6line 6line
7line 7l
8line 8line 8line
9line 9line 9line
10line 10line 10line
11line 11line 11line
12line 12line 12line
13line 13line 13line
14line 14line 14line
15li
txt2:
1line 1line 1line
3lin
5line 5line 5line
7line 7line 7line 7line
9line 9line 9line
11line 11line 11line
13line 13line 13line
15line 15e 15line
#chmod +x tt
#./tt
2line 2line 2line
3line 3line 3line
4line 4line 4line
5line 5line
6line 6line 6line
7line 7l
8line 8line 8line
10line 10line 10line
12line 12line 12line
14line 14line 14line
15li
将去除后的文件存放到txt3中,只要用">"符号重定向即可。
#./tt>txt3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询