在Bash中

时间:2015-12-06 21:50:04

标签: bash awk sed

我有一个包含大量行的文件,如下所示:

3 world 3 moon 3 night 2 world 2 video 2 pluto 1 world 1 pluto 1 moon 1 mars

我想取每个包含相同单词的行,并在添加前面的数字时合并它们,使它看起来像这样:

6 world 4 moon 3 pluto 3 night 2 video 1 mars

我一直在尝试与sed组合,但我似乎无法做到正确。我的下一个想法是对它们进行排序,然后检查下面的行是否是同一个单词,然后添加它们,但我无法弄清楚如何让它按字而不是数字排序。

1 个答案:

答案 0 :(得分:3)

总结和排序:

awk -F" " '{c[$2]+=$1} END {for (i in c){print c[i], i}}' | sort -n -r