utte

sort 行を並べ替える

sort [オプション] [ファイル...]

試してみる

主なオプション

-n数値として比べる
-r逆順にする
-k 開始[,終了]比べる列(キー)を指定する。1始まり
-t 文字列の区切り文字を指定する(既定は空白の切れ目)
-u重複した行を1行にする
-f大文字と小文字を区別しない
-h1K、2M のような単位付きの数を人が読む形式として比べる
-o ファイル結果を指定したファイルに書く(元のファイルにも使える)

解説

基本

sort は行を並べ替えて出力します。元のファイルは変わりません。並べ替えの順序は、環境のロケールに左右されることがあります。

数値の並べ替え

何も付けないと、文字として比べます。そのため 10 は 9 より前になります。数として比べるには -n が必要です。ファイルサイズの出力 du -h のような単位付きの数には -h を使います。

列を指定する

-k で、何列目で比べるかを指定します。-k2 は2列目から行末まで、-k2,2 は2列目だけで比べます。区切りは既定では空白の切れ目で、CSVなら -t, のように指定します。

uniq との関係

uniq は隣り合った同じ行しか1つにできないので、前処理に sort を使うのが定番です。sort -u は、その2つを1度でやります。

自分自身への出力

sort file > file は、リダイレクトでファイルが先に空になってしまい、内容が消えます。上書きしたいときは sort -o file file を使います。

このコマンドを使う問題

  1. cut と sort でCSVの列から重複のない一覧を作る
  2. アクセスログから最も多いIPアドレスを調べる

関連するコマンド

LinuC 101の出題範囲