如何首先使用字母对unix中的字母数字列进行排序,然后对数字进行排序

时间:2016-11-08 09:38:39

标签: shell sorting unix

假设我有一个文本文件:

08174 C6517298
08184 P0785411
08184 K0255564
01234 56789012
09098 A9877756

我想先用字母排序第二列,然后用数字

排序

预期结果应为:

09098 A9877756
08174 C6517298
08184 K0255564
08184 P0785411
01234 56789012

我尝试了sort -gk2,2sort -k2,2,两者都没有给我正确的结果。请帮忙。

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