bash - 在 Bash 中合并具有相同字符串的行

标签 bash awk sed

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

3个世界 3 月亮 3晚 2世界 2 视频 2 冥王星 1 个世界 1 冥王星 1 个月亮 1 火星

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

6 世界 4 月亮 3 冥王星 3晚 2 视频 1 火星

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

最佳答案

求和并排序:

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

关于bash - 在 Bash 中合并具有相同字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123226/

相关文章:

linux - bash 错误地输出星号和引号

bash - 在脚本中使用 sed 将文件内容替换为行

linux - Linux Shell脚本中for循环的语法

linux - 使用awk根据某些条件替换多个列的值

linux - 需要从大型 linux 文本文件(约 2000 万行)中解析数据字符串并转换为 csv

bash - 获取 "sed error - illegal byte sequence"(在 bash 中)

regex - 捕获两个标记之间的文本

linux - CentOS系统上的gcc版本问题

bash - 'grep +A' : print everything after a match

regex - 检查小数点,如果不存在,则使用 awk/perl 将其添加到末尾