コマンド | 説明 |
---|---|
sort | テキストファイル中の行を文字や数値に基づいて昇順(または降順)に並べ替える |
オプション | 説明 |
---|---|
-M, --month-sort | `JAN' < … < `DEC' のように比較します |
-n, --numeric-sort | 数字列として比較します |
-r, --reverse | 比較結果を逆順にします |
-c, --check | 入力がソートされているかチェックします。ソートしません |
-k, --key=POS1[,POS2] | キーを POS1 から開始し、POS2 までとします |
-t, --field-separator=SEP | フィールドセパレータを非空白文字から空白文字への変わり目ではなく、SEP を使用します |
以下のような「hoge.txt」があるとして、いろいろなソートを試してみます。
% less hoge.txt 1 789 fff 120000 1,6 2 789 ccc 16 2,5 3 456 ddd 1100000 3,4 4 456 aaa 1400 4,3 5 123 eee 13000 5,2 6 123 bbb 150 6,1
% sort -r < hoge.txt 6 123 bbb 150 6,1 5 123 eee 13000 5,2 4 456 aaa 1400 4,3 3 456 ddd 1100000 3,4 2 789 ccc 16 2,5 1 789 fff 120000 1,6
% sort -k3,3 < hoge.txt 4 456 aaa 1400 4,3 6 123 bbb 150 6,1 2 789 ccc 16 2,5 3 456 ddd 1100000 3,4 5 123 eee 13000 5,2 1 789 fff 120000 1,6
% sort -r -k4,4 < hoge.txt 2 789 ccc 16 2,5 6 123 bbb 150 6,1 4 456 aaa 1400 4,3 5 123 eee 13000 5,2 1 789 fff 120000 1,6 3 456 ddd 1100000 3,4
% sort -r -n -k4,4 < hoge.txt 3 456 ddd 1100000 3,4 1 789 fff 120000 1,6 5 123 eee 13000 5,2 4 456 aaa 1400 4,3 6 123 bbb 150 6,1 2 789 ccc 16 2,5
% sort -k2,3 < hoge.txt 6 123 bbb 150 6,1 5 123 eee 13000 5,2 4 456 aaa 1400 4,3 3 456 ddd 1100000 3,4 2 789 ccc 16 2,5 1 789 fff 120000 1,6
% sort -r -n -k2,2 -k4,4 < hoge.txt 1 789 fff 120000 1,6 2 789 ccc 16 2,5 3 456 ddd 1100000 3,4 4 456 aaa 1400 4,3 5 123 eee 13000 5,2 6 123 bbb 150 6,1
% sort -r -k2,2 -k3,3b < hoge.txt 2 789 ccc 16 2,5 1 789 fff 120000 1,6 4 456 aaa 1400 4,3 3 456 ddd 1100000 3,4 6 123 bbb 150 6,1 5 123 eee 13000 5,2
% sort -t ',' -r -k2,2 < hoge.txt 1 789 fff 120000 1,6 2 789 ccc 16 2,5 3 456 ddd 1100000 3,4 4 456 aaa 1400 4,3 5 123 eee 13000 5,2 6 123 bbb 150 6,1
以下のようなソートされてない「hoge.txt」があるとして、-c オプションを試してみます
% less hoge.txt 1 789 fff 120000 1,6 2 789 ccc 16 2,5 3 456 ddd 1100000 3,4 9 456 aaa 1400 4,3 5 123 eee 13000 5,2 6 123 bbb 150 6,1
% sort -c < hoge.txt sort: -:5: disorder: 5 123 eee 13000 5,2
ソートされていない行を「5行目」で発見したという意味