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 の同じ行に文字列がない (空白) 発生回数

commcmpおよびを使用しようとしましdiffたが、そのタスクを実行できませんでした。これを実行できる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 に答える