我需要总结一个大标签=分隔文件中一列的频率。
一个例子是:
abbot achievement 1
abbot acknowledge 2
abbot acknowledge 2
abbot acknowledge 3
abbot acquaintance 1
abbot acquire 2
abbot acquisition 2
abbot acre 1
abbot acre 4
abbot act 1
abbot act 4
abbot act 3
abbot act 8
abbot act 5
abbot act 7
abbot act 8
abbot action 2
abbot active 4
我想总结那些第1列和第1列的频率。 2对于最终结果是相同的:
abbot achievement 1
abbot acknowledge 7
abbot acquaintance 1
abbot acquire 2
abbot acquisition 2
abbot acre 5
abbot act 36
abbot action 2
abbot active 4
我问了一个类似的问题here: 并使用以下命令: $ sort input.txt | uniq -c | awk'{print $ 2“\ t”$ 3“\ t”$ 1 * $ 4}'`
但这并没有解决问题,因为例如sort函数只会将所有三列完全相同而产生一个结果,该结果会添加一个新列,其中包含来自所有三列的总频率。
有人可以建议对此命令进行修改以产生我想要的结果吗? 或者或许建议一条更好的途径来解决这个问题?
答案 0 :(得分:1)
使用awk
和数组中的和
awk '{ a[$1 FS $2]+=$3 } END {for (i in a) print i,a[i] }' file
abbot active 4
abbot action 2
abbot achievement 1
abbot acre 5
abbot acquire 2
abbot acknowledge 7
abbot acquisition 2
abbot act 36
abbot acquaintance 1