0

我需要总结几个大的制表符分隔文件的一列的频率。文件中的内容示例如下:

Blue    table   3 
Blue    chair   2 
Big cat 1 
Small   cat 2

连接文件后,问题如下:

第 2 列本质上是第 0 列和第 1 列的组合被一起看到的次数的频率计数。

我需要在连接文件的第 2 列中添加所有相同组合的频率。

例如:如果文件A中的内容如下:

Blue    table   3
Blue    chair   2
Big cat 1
Small   cat 2

文件B中的内容如下:

Blue    table   3
Blue    chair   2
Big cat 1
Small   cat 2

拼接后的文件C内容如下:

Blue    table   3
Blue    chair   2
Big cat 1
Small   cat 2
Blue    table   3
Blue    chair   2
Big cat 1
Small   cat 2

我想对文件 D 中第 0 列和第 1 列中所有相同组合的频率求和,以获得以下结果:

Blue    table   6
Blue    chair   4
Big cat 2
Small   cat 4

我尝试使用以下命令对信息进行排序和计数:

 sort <input_file> | uniq -c <output_file>

但结果如下:

  2 Big cat 1
  2 Blue    chair   2
  2 Blue    table   3
  2 Small   cat 2

有没有人建议可以产生我想要的结果的终端命令?

预先感谢您的任何帮助。

4

1 回答 1

1

你很近;你有你需要的所有数字。每行的总数是您从 uniq(第 1 列)获得的行数乘以频率计数(第 4 列)。你可以用 awk 来计算:

sort input.txt | uniq -c  | awk ' {  print $2 "\t" $3 "\t" $1*$4 } '
于 2013-09-20T15:46:46.453 回答