假设我有一个文本文件:
08174 C6517298
08184 P0785411
08184 K0255564
01234 56789012
09098 A9877756
我想先用字母排序第二列,然后用数字
排序预期结果应为:
09098 A9877756
08174 C6517298
08184 K0255564
08184 P0785411
01234 56789012
我尝试了sort -gk2,2
和sort -k2,2
,两者都没有给我正确的结果。请帮忙。
答案 0 :(得分:1)
awk '{print $2,$0}' inputfile |sort -g |awk '{print $2,$3}'
09098 A9877756
08174 C6517298
08184 K0255564
08184 P0785411
01234 56789012
答案 1 :(得分:1)
将-gk2,2
替换为-k2g
(您的意思是-k
选项,对吗?),然后添加-k2
sort -k2g -k2 file
密钥定义语法为F[.C][OPTS][,F[.C][OPTS]]
,其中F
是字段编号(2
,特别是); OPTS
是一个或多个单字母排序选项[bdfgiMhnRrV]
。
注意,您不需要,2
,因为它意味着在第二列停止排序,第二列是最后一列。
关键选项优先级按照您在命令中传递的顺序应用,即首先应用-k2g
,然后应用-k2
。