我需要一个Perl脚本来比较“file1”和“file2”中的行并复制到“final.log”
这样的事情:
FILE1.TXT:
- ASPO01
- ASPO02
- ASPO03
FILE2.TXT:
- ASPO01 2013-11-10 19hrs
- ASPO10 2013-11-09 24hrs
- ASPO02 2013-11-08 10hrs
- ASPO16 2013-11-05 9hrs
- ASPO17 2013-11-06 6hrs
- ASPO03 2013-11-07 15hrs
- ASPO18 2013-11-02 25hrs
- ...
在“File2”中搜索并复制到名为“final.log”的最终文件,如下所示:
final.txt:
- ASPO01 2013-11-10 19hrs
- ASPO02 2013-11-08 10hrs
- ASPO03 2013-11-07 15hrs
答案 0 :(得分:1)
你能不能只使用命令行吗?
$ grep -wFf file1.txt file2.txt > final.txt
我对你想要完成的事情并不是100%肯定。
另外,请记住,Stack Overflow是一个向问题寻求帮助和建议的地方,而不是“请为我编写X代码”。
答案 1 :(得分:0)
嗯......既然你刚开始使用perl并需要帮助我认为值得一试。 我想如下解决你的问题
这是一个代码片段,我没有试图描述我刚才提到的想法,而不是写下完整的解决方案。我希望你能帮助自己休息。
#File: compare.pl
my ($f1, $f2) = @ARGV;
open FILE1, $f1 or die "File $f1 not found";
open FILE2, $f2 or die "File $f2 not found";
my @lines1 = <FILE1>;
my @lines2 = <FILE2>;
for my $l (@lines1){
chomp $l;
# Use grep to look up $l in @lines2
# Print your desired result
# You may find this http://perl.about.com/od/perltutorials/qt/perlgrep.htm
# useful
}
使用两个命令行参数(如
)运行此脚本perl compare.pl /path/to/file1.txt /path/to/file2.txt