任意カラムでのsort

これもまた覚え書き。

sort コマンドは通常、テキストファイルを行単位でソートできますが、デリミタを指定して、任意のカラムでsortできます。

例えば

# cat testfile 
2 8 hogehoge
1 9 hogehoge
3 7 hogehoge

という文字列があり、普通にsortすると

# sort textfile
1 9 hogehoge
2 8 hogehoge
3 7 hogehoge

となります。 このファイルは文字がスペースで区切られていて、2番目の数字でソートしたい場合

# sort -t " " -k 2,2 testfile
3 7 hogehoge
2 8 hogehoge
1 9 hogehoge

で可能です。-t で区切り文字を指定して、-k でソート対象のカラムを指定します。2,2はカラム2からカラム2まで、つまりカラム2のみでソートを意味します。

ちなみにスペースが2つ以上連続する場合はあらかじめtrコマンドで1つにまとめておきましょう。

タイトルとURLをコピーしました