Unix使用未知分隔符排序(最后一列)

use*_*918 3 unix sorting bash delimiter

我的数据如下:

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
Run Code Online (Sandbox Code Playgroud)

如您所知,空间和标签混合在一起.我需要能够对最后一列降序进行排序.所以输出看起来像这样:

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      
Run Code Online (Sandbox Code Playgroud)

整个数据由所有AFL团队组成.

使用sort我怎样才能实现这一目标.我是否正确尝试使用$字符从行尾开始?我还需要在对最后一列进行排序后对倒数第二列进行排序.因此,最后一列中的任何重复数字将在最后一列中排序.代码到目前为止:

sort -n -t$'\t' -k 9,9 -k 8,8 tmp
Run Code Online (Sandbox Code Playgroud)

我如何考虑足球队的名字将被视为空白?

这是被排序的文件(文件名:'tmp')样本数据

iru*_*var 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  
..
..
Run Code Online (Sandbox Code Playgroud)