このエントリーをはてなブックマークに追加

いろいろデータ処理をするときに、行を時刻やシーケンシャルな番号でソートしたいことがありますのでsortしてみます。 seqをつかって以下のような文字列10行分を作成してこれを題材に。

$ seq 1 10
1
2
3
4
5
6
7
8
9
10

ふつうのsortを行うと辞書順なのでむしろ使いにくくなる場合もあるので要注意

$ seq 1 10 | sort
1
10
2
3
4
5
6
7
8
9

-dは明示的に辞書順のソートを指定するオプションなのでなにも指定しないのと同じっぽい。

$ seq 1 10 | sort -d
1
10
2
3
4
5
6
7
8
9

-gオプションをしていすると数字とみなして数字順でソートする。

$ seq 1 10 | sort -g
1
2
3
4
5
6
7
8
9
10

-rで逆順でソートする。

$ seq 1 10 | sort -r
9
8
7
6
5
4
3
2
10
1

数字の場合はやはりgオプションも加えたほうがよい。

$ seq 1 10 | sort -gr
10
9
8
7
6
5
4
3
2
1

あと、ランダムでソート(=シャッフル)というのもあるので、これも覚えておくと役に立ちそうです。

$ seq 1 10 | sort -R
1
2
6
7
10
3
5
9
8
4



記事一覧へ