Linux の sort コマンドでソートする列を指定する

Linux の sort コマンドはソートする列を指定することができます。

次のテキストファイル( score.txt )を処理してみます。

yamada  90
tanaka  100
sato    64
suzuki  93

オプションなしのソートだと次のようになります。

$ sort score.txt

sato    64
suzuki  93
tanaka  100
yamada  90

2 列目でソートします。

$ sort -k 2,2 score.txt

tanaka  100
sato    64
yamada  90
suzuki  93

"2,2" という指定は 「 2 列目から 2 列目まで」という意味で 2 列目のみを使ってソートするときの指定です。 "2" だけを指定すると 「 2 列目から最後まで」という意味になります。

数字が“数値”として認識されていないので ソート順が変です。 "-n" オプションで、数値を“数値”と認識させます。

$ sort -k 2,2 -n score.txt

sato    64
yamada  90
suzuki  93
tanaka  100

ついでに 値の大きい順(降順)にします。

$ sort -k 2,2 -n -r score.txt

tanaka  100
suzuki  93
yamada  90
sato    64

ソートできました。

CSV ファイルのように列の区切り文字が空白でないときは 次のように "-t" オプションで区切り文字を指定できます。

$ sort -k 2,2 -n -r -t "," score.txt

Google サイト内検索

Amazonアソシエイト