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 を使用して、どうすればこれを達成できますか。$ 文字を使用して行末から開始しようとしているのは正しいですか? また、最後の列を並べ替えた後、最後から 2 番目の列を並べ替える必要があります。したがって、最後の列の重複する数値は、最後の 2 番目の列に並べ替えられます。これまでのコード:

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 に答える