我需要总结几个大的制表符分隔文件的一列的频率。 文件中的内容示例如下:
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
有没有人建议终端命令可以产生我想要的结果?
提前感谢您的帮助。
答案 0 :(得分:1)
你很亲密;你有你需要的所有数字。每行的总数是从uniq(第1列)乘以频率计数(第4列)得到的行数。你可以用awk来计算:
sort input.txt | uniq -c | awk ' { print $2 "\t" $3 "\t" $1*$4 } '