パソコン鳥のブログ

アクセスカウンタ

zoom RSS sortコマンドをもっと使いこなす

<<   作成日時 : 2016/06/17 19:45   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

sortコマンドは、カンマ区切りデータ(CSV)や、タブ区切りデータ(TSV)の指定のフィールド(列)でソート出来ます。
またフィールド(列)は複数指定でき、それぞれ数値か文字列でのソートかも指定できます。
このようなソートを行うためのsortコマンドの使い方についてです。


オプション


各フィールド(列)のセパレーターの指定


デフォルトは空白区切りですが、セパレーターを空白以外にする場合は、-t オプションで指定します。
CSV の場合は、「-t ,」とします。
TSV の場合は、「-t $'\t'」 とします。$ を付け忘れないでください。


ソート対象のフィールド(列)の指定


-k オプションでソート対象のフィールド(列)を指定します。
何番目のフィールド(列)をソート対象とするかを番号で指定します。番号は1番から数えます。
manコマンドでは 0番からと説明されていますが、実際は1番からです。

-k POS1[,POS2] の書式で、'POS1'列から'POS2'列が対象になります。POS2 が省略された場合は、行末までの列になります。

複数フィールド(列)を指定する場合は、-k オプションを列挙します。


ソート方法が数値/文字列かの指定


デフォルトは文字列ソートです。
数値としてソートする場合は、-kオプションの最後に n を付けます。

-n オプションを指定すると、全てのフィールド(列)を数値としてソートします。


ソート例


サンプルファイルの内容


CSVファイル test2.csv

1,grape,99
3,orange,100
10,apple,555
5,banana,-5
2,kiwi,-9
7,pineapple,555

TSVファイル test2.tsv

1 grape 99
3 orange 100
10 apple 555
5 banana -5
2 kiwi -9
7 pineapple 555



例)TSVファイルの2列目を文字列としてソートする



$ sort -t $'\t' -k2,2 test2.tsv
10 apple 555
5 banana -5
1 grape 99
2 kiwi -9
3 orange 100
7 pineapple 555

TSV形式なので、各フィールド(列)のセパレーターがタブであることを -t $'\t' で指定します。
-k2,2 で2列目を指定します。
-nオプションや -kにnオプションが無いので、デフォルトの文字列ソートが行われます。


例)CSVファイルの3列目を数値としてソートする



$ sort -t , -k3,3n test2.csv
2,kiwi,-9
5,banana,-5
1,grape,99
3,orange,100
10,apple,555
7,pineapple,555

CSV形式なので、各フィールド(列)のセパレーターがカンマであることを -t , で指定します。
-k3,3 で3列目を指定します。
-kにnオプションを付けているので、3列目で数値ソートが行われます。


例)CSVファイルの3列目を文字列としてソートする



$ sort -t , -k3,3 test2.csv
5,banana,-5
2,kiwi,-9
3,orange,100
10,apple,555
7,pineapple,555
1,grape,99

CSV形式なので、各フィールド(列)のセパレーターがカンマであることを -t , で指定します。
-k2,2 で2列目を指定します。
-n や -kにnオプションが無いので、デフォルトの文字列ソートが行われます。


例)CSVファイルの3列目,1列目の順で数値としてソートする



$ sort -t , -k3,3n -k1,1n test2.csv
2,kiwi,-9
5,banana,-5
1,grape,99
3,orange,100
7,pineapple,555
10,apple,555

CSV形式なので、各フィールド(列)のセパレーターがカンマであることを -t , で指定します。
-k3,3 と -k1,1 で3列目、1列目の順でのソートを指定します。
-kにnオプションを付けているので、数値ソートが行われます。


参考


Man page of SORT
sort コマンドのセパレータをタブにするには「-t $'\t'」

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
sortコマンドをもっと使いこなす パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる