永发信息网

为什么用perl删除一个文件中与另一个文件相同的部分,结果删了很多不该删的内容?

答案:1  悬赏:40  手机版
解决时间 2021-02-14 18:50
  • 提问者网友:疯子也有疯子的情调
  • 2021-02-13 18:40
#! /usr/bin/perl -w #开关
use strict;

my @tmp;
my $comp;
open FD, "F:/perl/txt2.txt";
open FPI, "F:/perl/txt1.txt";
@tmp = ;
foreach $comp (@tmp) {
chomp $comp;
}

print "@tmp\n";
$^I=".bak";
while()
{for my $comp (@tmp)

{
s/^@tmp//;
}
print;
}

close FD;

close FPI;
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-02-13 19:32
看你具体要求了,你这是把某个文件每行全部记录,然后在下个文件读的过程中去匹配刚才记忆的每一行,只要开头相同就会去掉,有这么几个问题。比如记录的是
123
1234
abc
去掉的文件原来是
123 之后 (空行)
1234 之后 4 (因为匹配的时候首先匹配123,成功,就去掉123)
p abc 之后 p abc (不变)
abc123 之后 123(去掉了abc)

总之看你具体要求,你如果想要去掉第一个文件里面所有关键词,就在s后面加g的选项;如果想某一行完全匹配再删掉,就匹配到行末,用$符号结尾;如果想在刚才的例子把123和1234都去掉,就得在前面排序,先匹配长的,再匹配短的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯