我想按字母数字顺序对文件进行排序,但优先考虑每个文件条目中的数字。示例:文件是:
22 FAN
14 FTR
16 HHK
19 KOT
25 LMC
22 LOW
22 MOK
22 RAC
22 SHS
18 SHT
20 TAP
19 TAW
23 TWO
15 UNI
我想将其排序为:
25 LMC
23 TWO
22 FAN
22 LOW
22 MOK
22 RAC
22 SHS
20 TAP
19 KOT
19 TAW
18 SHT
16 HHK
15 UNI
14 FTR
最佳答案
因此,基本上,您要求按降序对第一个字段进行数字排序,但如果数字键相同,您希望第二个字段按自然或升序排序。
我尝试了一些方法,但这是我设法使其发挥作用的方法:
sort -nk2 file.txt | sort -snrk1
说明:
第一个命令使用第二个字母数字字段按自然顺序对整个文件进行排序,而第二个命令使用第一个数字字段对输出进行排序,以相反的顺序显示它,并要求它是“稳定”排序。
-n
用于数字排序,而不是字母数字排序,其中 6 将排在 60 之前。-r
用于倒序,即从最高到最低。如果未指定,它将采用自然顺序或升序顺序。-k
用于排序的键或字段。-s
用于稳定排序。此选项保留具有相等键的记录的原始记录顺序。
关于linux - 在linux中按字母数字优先排序数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52847393/