Bash shell - 按第二个字母排序单词列表?

时间:2014-04-30 07:45:38

标签: linux shell sorting

我需要按字母顺序按第二个字母对单词列表进行排序,而我似乎无法找到一种方法。

未排序:

smokelessly
toelike
arsenous
malabar
antiperspirant
hock
nibbing
paleographically
goon

排序:

malabar
paleographically
nibbing
smokelessly
antiperspirant
hock
toelike
goon
arsenous

我已经阅读了sort命令,但它似乎没有让我这样做的功能?

1 个答案:

答案 0 :(得分:10)

sort -kX.Y是你的朋友! X指的是列,Y指的是字符。

$ sort -k1.2 file
malabar
paleographically
nibbing
smokelessly
antiperspirant
hock
toelike
goon
arsenous

如果要定义要排序的最后位置,可以使用

sort -k1.2,Z file

来自man sort

  

-k , - key = KEYDEF

     

通过钥匙排序; KEYDEF给出位置和类型

     

KEYDEF是F [.C] [OPTS] [,F [.C] [OPTS]]的开始和停止位置,   其中F是字段编号,C是字段中的字符位置;   两者都是原点1,停止位置默认为行的结尾。   如果-t和-b都不起作用,则计算字段中的字符   从前面的空白开始。 OPTS是一个或多个   单字母排序选项[bdfgiMhnRrV],它覆盖全局   该密钥的订购选项。如果没有给出密钥,请使用整个密钥   行作为关键。