0

假设我有 2 个文件,如下所示:

文件 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 中的同一行没有任何内容(空白)的发生次数

我尝试使用comm,cmpdiff,但他们无法完成该任务。有没有可以做到这一点的linux命令?

4

1 回答 1

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";

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

于 2013-02-11T19:29:18.570 回答