数字、文字、句読点が混在する列に基づいてファイルをソートする方法は?

数字、文字、句読点が混在する列に基づいてファイルをソートする方法は?

次の形式のテキストファイルがあります。

b   SN:2
d   SN:5
f   SN:10
g   SN:11
h   SN:15
i   SA:3
j   SN:1
k   SN:4

2番目の列、実際には2番目の列の数値に基づいてソートしたいと思います。私は努力しました -

$ sort -n -k2,2 file
$ sort -k2.4,2.5n file

しかし、何も動作しないようです。

ベストアンサー1

オプションを使用しないため-t-bまたはGNUソート)、したがって計算は先行スペースの始めから始めるべきです。 POSIXの定義sort -k 拡張の説明ように:

A field comprises a maximal sequence of non-separating characters and, in 
the absence of option -t, any preceding field separator

したがって、以下を使用する必要があります。

$ sort -nk2.7 file
j   SN:1
b   SN:2
i   SA:3
k   SN:4
d   SN:5
f   SN:10
g   SN:11
h   SN:15

ただし、これをフィールド区切り文字として使用してから、2:番目のフィールドに基づいて数値を並べ替えることができます。

$ sort -t':' -nk2 file
j   SN:1
b   SN:2
i   SA:3
k   SN:4
d   SN:5
f   SN:10
g   SN:11
h   SN:15

おすすめ記事