Unix command > sort (ソート処理)

更新日 2014-10-31
広告

sortコマンドを使うと、ファイルの各行をソートできます。

単純なソート

サンプルファイル file.dat の内容は、以下のとおりです。

100
30
090

単純にsortコマンドを実行すると、以下のようになります。

$ sort file.dat 
090
100
30

sortコマンドは、デフォルトで、各行を文字列として、辞書順にソートします。そのため、上記のような結果となります。

数値としてソート

各行を数値としてソートする場合は、 -n オプションを指定します。

$ sort -n file.dat 
30
090
100

逆順にソートしたければ、-r オプションを指定します。

$ sort -n -r file.dat
100
090
30

上記のように、他のオプションと併用可能です。

特定の列でソート

サンプルファイル file.dat の内容が、以下のようなCSVファイルだとします。

ken,100
mary,30
bob,90

このファイルの内容を、2列目の数値でソートすることもできます。

$ sort -t , -k 2 -n file.dat 
mary,30
bob,90
ken,100

区切り文字は、-t オプションで指定します(上記の場合は「カンマ」)。何列目でソートするかは、-k オプションで指定します。

以下は、まず2列目でソートして、そのあと、1列目を数値としてソートする例です。

$ sort -t , -k 2,2 -k 1n test.txt

大文字と小文字を区別せずにソート

デフォルトだと、sortコマンドは大文字と小文字を区別してソートします。 例えば、'VM'と'Vi'という文字があったとき、デフォルトだと以下のようにソートします。
VM
Vi
大文字と小文字の区別をしなくてよい場合は、-fオプションを使います。
$ sort -f file.txt
Vi
VM
これで、大文字小文字を区別せずにソートします。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system