2013-02-11 106 views
0

線假設我有2個文件,這樣的:比較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的同一行無關(空白)

我試圖用commcmpdiff,卻是不能。做那個任務。 有沒有可以做到這一點的任何Linux命令?

+0

一個簡單的'awk'腳本會做,例如。 – lynxlynxlynx 2013-02-11 19:10:05

回答

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

沒有錯誤檢查可言,假定這兩個文件是相同的長度,...

+0

您好,感謝您的幫助,代碼運行良好,只是空行與「\ n」匹配而不是「」。 – Bioinfoguy 2013-02-12 14:21:45