使用Perl比较两个文件并将整行复制到“final.log”

时间:2013-11-10 21:37:04

标签: perl unix-timestamp

我需要一个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

2 个答案:

答案 0 :(得分:1)

你能不能只使用命令行吗?

$ grep -wFf file1.txt file2.txt > final.txt

我对你想要完成的事情并不是100%肯定。

另外,请记住,Stack Overflow是一个向问题寻求帮助和建议的地方,而不是“请为我编写X代码”。

答案 1 :(得分:0)

嗯......既然你刚开始使用perl并需要帮助我认为值得一试。 我想如下解决你的问题

  1. 从FILE1
  2. 取一条线
  3. 尝试查找它是否与FILE2中的任何行匹配
  4. 如果匹配打印该行
  5. 这是一个代码片段,我没有试图描述我刚才提到的想法,而不是写下完整的解决方案。我希望你能帮助自己休息。

     #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