0

我需要总结一个大标签=分隔文件中一列的频率。

一个例子是:

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 列和第 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

我在这里问了一个类似的问题:并使用了以下命令:$ sort input.txt | 唯一的-c | awk ' { 打印 $2 "\t" $3 "\t" $1*$4 } '`

但这并不能解决问题,因为例如 sort 函数只会对所有相同的三列求和,从而产生一个结果,即添加一个新列,其中第一列具有所有三列的总和频率。

任何人都可以建议对此命令进行修改以产生我想要的结果吗?或者也许建议更好的途径来解决这个问题?

4

1 回答 1

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
于 2013-09-26T11:13:47.927 回答