Chinaunix

标题: 关于sort 多列排序问题 [打印本页]

作者: qulei616    时间: 2018-11-29 00:40
标题: 关于sort 多列排序问题
test.log
1 2 3
3 5 8
6 8 3
4 2 1
3 6 5

现在遇到一个问题 想所有列按照升序排列 原有的行可以打乱 因为只想拿到最后一行的三个最大数字。
但是查找了很多相关的资料昨天折腾几个小时 类似 cut -n -t 分隔符 -k1,1 -k2,2 -k3,3 这种都是已某一列为基础排序 在不改变行的情况下排列。请教sort 或者awk的 相关写法 谢谢

作者: wh7211    时间: 2018-11-29 09:48
回复 1# qulei616


  1. awk '{for(i=1;i<=NF;i++){a[i]=a[i]>$i?a[i]:$i}}END{for(i in a){print i,a[i]}}' test.log
  2. 1 6
  3. 2 8
  4. 3 8
复制代码

作者: xdsnet    时间: 2018-12-04 15:12
本帖最后由 xdsnet 于 2018-12-04 15:17 编辑

本身sort就是对行来排序,你的需求其实应该是析出每列,再分别排序,这样就可以得到最后的结果。
cut -d' ' -f 1 abc.txt  | sort -n | tail -n 1

cut -d' ' -f 2 abc.txt  | sort -n | tail -n 1

cut -d' ' -f 3 abc.txt  | sort -n | tail -n 1

这样得到的3个数字就是你要的结果啊






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2