web-dev-qa-db-ja.com

番号で意図したとおりにソートコマンドが機能しない

これが私のlist.txtです。

a    100
b    300
A    50
e    75
1    10

以下のコマンドを実行しました:

sort -k2,2 list.txt

これは私が得たものです:

1    10
a    100
b    300
A    50
e    75

2列目のみを並べ替えようとしています。ウィキペディアによると、上記のコマンドで次の結果が得られるはずです。

a 10
b 50
A 75
e 100
1 300

何か不足していますか?

https://en.wikipedia.org/wiki/Sort_(Unix)

4
Mint.K

デフォルトでは、sortは、現在のロケールの 照合シーケンス に基づいて 辞書順 で文字ごとにソートします。したがって、あなたの例では、10010の後、50の前にソートされます。なぜなら、1は常に5の前にソートされるからです。

数値順に並べ替えるには、n指定子を追加する必要があります

   -n, --numeric-sort
          compare according to string numerical value

例えば.

$ sort -k2,2n list.txt
1   10
A   50
e   75  
a   100 
b   300
16
steeldriver