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


指定したフィールドでソートする方法・sort -k

sortコマンドの-kオプションを利用することにより、指定したフィールドでソートすることができます。
以下にフィールドを指定してsortする方法を以下に記します。


sort -k にてフィールドを指定してsort

以下のファイルを使用してフィールド指定によるsortを行ってみます。

sakura@ubuntu:~$ cat flower.txt
sakura 10 100
tsubaki 20 300
suzuran 30 50
ajisai 40 150
bara 50 200
kiku 60 300
himawari 70 250

-k フィールド番号,[フィールド番号]

sortの-kオプションによりフィールドを指定しsortすることができます。
構文は以下のようになります。

sort -k フィールド番号1[,フィールド番号2]

フィールド番号1に指定したフィールドからフィールド番号2に指定した範囲のフィールドをキーとしてソートします。

1つのフィールドを指定しソートしてみる

上記のflower.txtの2つ目のフィールドで逆順ソートしてみます。
オプション-kで2番めのフィールドから2番目のフィールド(つまり2番めのフィールドのみ)として-rオプションをつけて逆順ソートしています。

sakura@ubuntu:~$ sort -k 2,2 -r flower.txt
himawari 70 250
kiku 60 300
bara 50 200
ajisai 40 150
suzuran 30 50
tsubaki 20 300
sakura 10 100

CSVファイルのソート

上記のflower.txtと同様の内容でカンマ区切りのcsvで同様のソートをしてみます。

sakura@ubuntu:~$ cat flower.csv
sakura,10,100
tsubaki,20,300
suzuran,30,50
ajisai,40,150
bara,50,200
kiku,60,300
himawari,70,250

セパレータを指定してsort -kを実行

オプション-tを利用することによりセパレータを指定できます。
オプション-rも指定し逆順ソートとしています。 今回はCSVなので、-tでカンマを指定しています。

sakura@ubuntu:~$ sort -r -t , -k 2,2 flower.csv
himawari,70,250
kiku,60,300
bara,50,200
ajisai,40,150
suzuran,30,50
tsubaki,20,300
sakura,10,100

以上、sortコマンドで指定したフィールドでソートする方法でした。



添付ファイル: fileflower.csv 467件 [詳細] fileflower.txt 492件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:20