我有一个文件,其中有3个字段。
字段1具有名称,字段2和3具有数字值。我需要根据其中存在的最高值对所有字段进行排序。
File1.txt
ASANSOL 16.76 31.991
ASANSOL 16.72 33.687
ASANSOL 16.48 25.344
ASANSOL 16.74 30.777
BANGALORE 13.39 17.243
BANGALORE 14.34 20.852
BANGALORE 15.58 25.112
BANGALORE 14.59 34.752
BANGALORE 17.93 2.792
BHOPAL 16.53 13.487
BHOPAL 16.7 11.599
BHOPAL 16.65 16.003
BHOPAL 16.87 20.674
排序并获取唯一值后,所需的输出应如下所示:
ASANSOL 16.76 33.687
BANGALORE 17.93 34.752
BHOPAL 16.87 20.674
帮帮我怎样才能解决这个问题? #Script会更好
答案 0 :(得分:1)
抱歉,我先回答了一个问题。正确的答案更简单:
awk '{ d1[$1] = $2; d2[$1] = $3 } END { for(x in d1) print x, d1[x], d2[x] }' <filename>
-----------老答案-----------------
答案很简单:cat <filename> | awk '{ if($2>$3) { max = $2 } else { max = $3 } print max, $0 }' | sort -r | sed 's/^[0-9.]* //'
答案 1 :(得分:-1)
如果您不想编写一个小脚本来处理此问题,可以使用awk进行排序: http://www.gnu.org/software/gawk/manual/gawk.html