はむはむエンジニアぶろぐ

プログラミングやファイナンスや健康や目標設定などを中心にブログを書いてます

よく使うsortコマンドの使い方 - UNIX

UNIXのsortコマンドは便利ですが、毎回使い方をググってしまう。
よく使うsortコマンドの使い方をまとめておく。

整数の昇順

例えば、こんな整数の羅列があるとします。

$ cat id_list.txt
1
6
8
1234
69
3
99
217


-n(--numeric-sort)オプションで整数の昇順に並べ替えます。

$ sort -n id_list.txt
1
3
6
8
69
99
217
1234

整数の降順

整数の降順は-r(--reverse)オプションを付けます。

$ sort -nr id_list.txt
1234
217
99
69
8
6
3
1

CSVの特定の列を整列する

普段、テキストの整列をする場合はCSVなどのフォーマットが多いはず。
例えば、こんなファイルがあったとする。
性別,名前,年齢。

$ cat human.csv
男,aaa,23
女,bbb,88
男,ccc,27
女,ddd,18
男,eee,19
女,fff,53
男,ggg,66
女,hhh,32
男,iii,45
女,jjj,21
男,kkk,21

性別で整列する

-tオプションで区切り文字を指定する。
-kオプションで整列したい列を指定。

CSVの1列目を整列したい。
-t ','の-k1,1とする。
-k1だと結果が異なるので注意。

$ sort -t ',' -k1,1 human.csv
女,bbb,88
女,ddd,18
女,fff,53
女,hhh,32
女,jjj,20
男,aaa,23
男,ccc,27
男,eee,19
男,ggg,66
男,iii,45
男,kkk,20

年齢で整列する

-kを3にするだけ。

$ sort -t ',' -k3,3 human.csv
女,ddd,18
男,eee,19
女,jjj,20
男,kkk,20
男,aaa,23
男,ccc,27
女,hhh,32
男,iii,45
女,fff,53
男,ggg,66
女,bbb,88

性別の昇順で年齢の降順で整列する

性別で昇順に整列した後に、年齢の降順で整列させることができる。

$  sort -t ',' -k1,1 -k3nr human.csv
女,bbb,88
女,fff,53
女,hhh,32
女,jjj,20
女,ddd,18
男,ggg,66
男,iii,45
男,ccc,27
男,aaa,23
男,kkk,20
男,eee,19

最近読んだ本