Ole*_*kin 5 linux unix sorting
我有几个 .txt 文件(在同一目录中),如下所示:
123 carrot
50 apple
13 tomato
5 potato
2 pear
Run Code Online (Sandbox Code Playgroud)
和
100 carrot
10 apple
3 tomato
2 potato
Run Code Online (Sandbox Code Playgroud)
我需要将它们合并到一个排序列表中。所以如果我上面只有两个列表,我会得到
223 carrot
60 apple
16 tomato
7 potato
2 pear
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以使用 shell 命令来做到这一点,还是应该开始编写代码?
谢谢!
“shell 命令”和“代码”之间的界限在哪里?这个示例可能超出了该范围,但它只是一个快速聚合函数,因为awk
我已经为另一个(更详细的)目的编写了它,所以我不妨发布它。
假设文件位于目录中dir/
,awk
可以将它们总结如下:
awk '
{fruits[$2]+=$1}
END { for (fruit in fruits) {printf "%6s %s\n", fruits[fruit], fruit} }
' dir/* | sort -rn
Run Code Online (Sandbox Code Playgroud)
分解:
fruits
(如果该索引不存在,则创建该索引)。fruits
并以指定的格式打印它们的值和名称。awk
是可能的,但是使用 . 看起来更容易sort
。-rn
按数字降序排序。