所以我有以下格式的大量数据(.txt文件):
1500 this
1450 is
1200 some
1000 data
该数字是我使用以下Unix终端命令连接的其他一些文本文件中的以下单词的实例数:
cat *.txt | tr " " "\n" | sort | uniq -c | sort -gr > somefile.txt
现在我有一些somefile.txt(所有都有唯一的名称; 135.txt - 143.txt)。我想要做的是将这些文件合并到一个大文件中,同时保留并添加单词实例的数量到总数。因此,如果它是两个包含以下数据的文件:
1500 this 1000 is
1450 is and 900 this
1200 some 800 some
1000 data 700 else
新文件应包含以下数据:
2450 is
2400 this
2000 some
1000 data
700 else
实现这一目标的好方法是什么?
答案 0 :(得分:0)
您可以使用awk
:
awk '{a[$2]+=$1} END {for (i in a) {print a[i],i}}' file1 file2 file3 ... | sort -rn
示例输出:
$ cat f1
1500 this
1450 is
1200 some
1000 data
$ cat f2
1000 is
900 this
800 some
700 else
$ awk '{a[$2]+=$1} END {for (i in a) {print a[i],i}}' f1 f2 | sort -rn
2450 is
2400 this
2000 some
1000 data
700 else
解释 - 这首先循环遍历所有文件,对于每一行,它将第一列的值添加到第二列的数组索引中。处理完所有文件后,将输出生成的数组。