Sort

忽略coreutils排序中的空白鍵

  • November 10, 2013

使用 sort -k 時如何忽略或有辦法更改空鍵的排序順序?

# cat afile
a  b
11 20
93 45
55
26
09 31

如何對底部的空列 b 值進行排序,使其看起來像這樣:

a  b
11 20
09 31
93 45
26
55

這是我得到的:

sort -k 2b tmp/file
26
55
11 20
09 31
93 45

您可以為空欄位添加特殊的排序鍵,並在排序後再次將其刪除。該鍵不能出現在您的輸入數據中,並且必須大於每個(數字)值。

例如:

$ awk '$2 ~ /^$/ { print $1, "XXX"; next; } {print $0 }' f \
   | sort -k2b
   | sed 's/XXX$//'
11 20
09 31
93 45
26 
55

另一種方法:

awk '{print NF, $0}' | sort -k1,1rn -k3 | cut -d' ' -f2-

那就是添加另一列具有欄位數的列,並首先按反向欄位數排序。

引用自:https://unix.stackexchange.com/questions/85483