[英]Sorting numerically but not alphabetically when numbers are equal
我有一個這樣的文件:
A 0.77
C 0.98
B 0.77
Z 0.77
G 0.65
我想按降序對文件進行數字排序。 我用過這段代碼:
sort -gr -k2,2 file.txt
我得到了這個:
C 0.98
Z 0.77
B 0.77
A 0.77
G 0.65
在我的真實文件中,我有幾個具有相同編號的列,它們按字母順序排序。 我想要的是在數字相等的情況下按數字排序但不按字母順序排序,我想按字母順序獲取那些未排序的列:
C 0.98
B 0.77
Z 0.77
A 0.77
G 0.65
但任何隨機順序都沒問題。
你可以使用這種sort
:
sort -k2rn -k1R file
C 0.98
B 0.77
Z 0.77
A 0.77
G 0.65
使用了2種排序選項:
-k2rn
:第一個排序鍵是第2列; 數字,反向 -k1R
:第二個排序鍵是第1列; 隨機 一個在GNU awk中保留第一個字段的順序(隨機輸入,同樣隨機輸出):
$ awk ' {
a[$2]=a[$2] (a[$2]==""?"":FS) $1 # append $1 values to hash, indexed on $1
}
END {
PROCINFO["sorted_in"]="@ind_num_desc" # set for traverse order for index order...
for(i in a) { # ... and use it here
n=split(a[i],b)
for(j=1;j<=n;j++) # preserve the input order
print b[j],i # output
}
}' file
C 0.98
A 0.77
B 0.77
Z 0.77
G 0.65
測試逆序:
$ tac file | awk '# above awk script'
C 0.98
Z 0.77
B 0.77
A 0.77
G 0.65
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.