2013-02-11 87 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