逐行比较2个文件

时间:2013-02-11 19:04:05

标签: comparison diff text-files

假设我有两个文件,如:

文件1:

Verrucomicrobiaceae

Porphyromonadaceae
Clostridium
Verrucomicrobiaceae
Clostridium
Bacteroidaceae
Clostridium
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Clostridium

文件2:

Verrucomicrobiaceae

Porphyromonadaceae

Verrucomicrobiaceae

Porphyromonadaceae

Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae

我想计算以下内容:

  1. 否。文件1和2中的行相同的发生率
  2. 否。文件1和2中的行不同的发生率
  3. 否。文件1中的一行有字符串的事件,而文件2中的同一行没有(空白)
  4. 否。文件2中的一行有字符串的事件,而文件1中的同一行没有(空白)
  5. 我尝试使用commcmpdiff,但他们无法完成该任务。 有没有可以做到这一点的linux命令?

1 个答案:

答案 0 :(得分:0)

这很专业,标准工具可能不容易。我会编写一个程序进行比较,就像在Perl中一样:

#!/usr/bin/perl

open(IN1, "< file1");
open(IN2, "< file2");

$count1 = $count2 = $count3 = $count4 = 0;
while(<IN1>) {
   $line1 = $_;
   $line2 = <IN2>;
   $count1++ if($line1 eq $line2);
   $count2++ if($line1 ne $line2);
   $count3++ if($line1 ne "" && $line2 eq "");
   $count4++ if($line1 eq "" && $line2 ne "");
}
print "$count1 $count2 $count3 $count4\n";

根本没有错误检查,假设两个文件的长度相同,......