我的数据如下:
Adelaide Crows 5 2 3 0 450 455 460.67 8
Essendon 5 5 0 0 622 352 955.88 20
Fremantle 5 3 2 0 439 428 598.50 12
正如您所知,空间和标签混合在一起。我需要能够对最后一列降序进行排序。所以输出看起来像这样:
Essendon 5 5 0 0 622 352 955.88 20
Fremantle 5 3 2 0 439 428 598.50 12
Adelaide Crows 5 2 3 0 450 455 460.67 8
整个数据由所有AFL团队组成。
使用sort我怎样才能做到这一点。我是否正确尝试使用$字符从行尾开始?我还需要在排序最后一列之后对第二列进行排序。因此,最后一列中的任何重复数字将在最后一列中排序。代码到目前为止:
sort -n -t$'\t' -k 9,9 -k 8,8 tmp
我如何考虑足球队的名字将被视为空白?
这是要排序的文件(文件名:'tmp')sample data
答案 0 :(得分:6)
您可以先使用awk
将最后一个字段复制到第一个位置,然后使用第一个字段将sort
复制到第一个位置,使用cut
删除第一个字段。
awk '{print($NF" "$0)}' sample.txt | sort -k1,1 -n -r -t' ' | cut -f2- -d' '
Port Adelaide 5 5 0 0 573 386 916.05 20
Essendon 5 5 0 0 622 352 955.88 20
Sydney Swans 5 4 1 0 533 428 681.68 16
Hawthorn 5 4 1 0 596 453 620.64 16
Richmond 5 3 2 0 499 445 579.68 12
..
..