3

我的数据如下所示:

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 -n -t$'\t' -k 9,9 -k 8,8 tmp

我如何考虑到足球队名称将被视为空格?

这是正在排序的文件(文件名:'tmp')示例数据

4

1 回答 1

6

您可以使用 first 将最后一个字段复制到第一个位置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  
..
..
于 2013-05-16T17:25:56.223 回答