【UNIXコマンド】sortでファイル内の行を並べ替え(ソート)

UNIXコマンド「sort」でファイル内の行を並べ替え(ソート)する方法についてまとめました。

ファイル内の行を並べ替え(ソート)

sortは、ファイル内の行を並べ替え(ソート)できます。

sort [オプション] ファイルパス
オプション 説明
-c ソート済みか否かをチェック(真なら0、偽なら1を返す)
-t 文字 列の区切り文字を指定(デフォルトはスペース)(t, だとコンマ区切り)
-k m[, n] m列目から[n列目]の値をキーにしてソート
-r ソート順序を逆にする
-n 空白を無視
-b 先頭のスペースとタブを無視
-d 英数字、空白、タブ以外を無視
-f 大文字小文字を区別しない
-u 同一内容の行を削除

※-k 5,6 だと5列目で比較し、5列目が同じ場合は6列目で比較
※-k 5だと、5列目で比較し、同じ場合は6列目で比較・・・という風に最後の列まで順に比較

実行例

コマンドの実行例です。

$ sort -n k 5 data.txt

4   Korea   Lee Fei   21
2   Japan   Kei Sato  22
5   British Mey Craus 24
1   America Tom Brown 25
3   China   Mao Ryu   28

上記の例は、data.txt内の行を5列目のデータを数値ソートで並べ替えた結果です。

「sort -nk5 data.txt」とコマンドを短縮することもできます。

※ -nを忘れると、連続した空白も列にカウントされ、2つ目の連続した空白がソート対象となります

関連記事
1 【UNIX入門】コマンド・サンプル集
関連記事