使用shell脚本按两列的总和对文件进行排序

时间:2017-05-01 13:47:35

标签: linux bash shell unix

假设我有一个文件(示例),如下所示:

Apple - 2750 - 30
Pear - 1000 - 45
Peach - 1245 - 3
Banana - 1500 - 50

我想使用shell脚本按第二列和第三列的总和对这些行进行排序 所以在运行我的shell脚本之后我想看看:

Apple - 2750 - 30
Banana - 1500 - 50
Peach - 1245 - 3
Pear - 1000 - 45

我设法得到两列的总和:

cat sample | awk -F " - " '{sum=$2+$3}{print sum}'

现在,我如何按总和对此文件进行排序(我不想更改文件,只将其写入终端)?

1 个答案:

答案 0 :(得分:2)

将awk与sortcut混合:

$ awk '{print $0, $3+$5}' sample | sort -k6rn | cut -d' ' -f 1-5
Apple - 2750 - 30 2780
Banana - 1500 - 50 1550
Peach - 1245 - 3 1248
Pear - 1000 - 45 1045

以上显示的是总和,但实际上cut会将其删除。你也可以使用GNU awk' s asort来完成它。