Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

sort

ファイルの内容をソートする
2015/05/20 08:00

対応OS: linux , freebsd, solaris
sort [-t SEP] [-k POS1[,POS2]] [-i] [-r] [-f] [-b] [FILE...]

 sortコマンドは、FILE...に指定したファイルの内容をソートします。ソートに使用するソートキーは、デフォルトでは行全体になりますが、オプションの指定でこのソートキーを指定することもできます。

ソートとソートキー

 ソートとは、並べ替えのことで、sortコマンドにおける並べ替えは、行全体あるいはソートキーに指定したフィールドの文字列をキーとして行います。キーとなる文字列のことをソートキーといい、ソートキーの文字コード(ASCIIコード)の値が小さいものから順番に並べ替えることを「昇順にソートする」といい、逆に文字コードの値が大きいものから順番に表示する並べ替えることを「降順にソートする」といいます

オプション
① -t SEP
フィールドの区切り文字を「SEP」に指定します。このオプションは、オプション「-k」を指定して特定のフィールドをソートキーにする場合に有効です。省略した場合の区切り文字はスペースとなります。
② -k POS1[,POS2]
「POS1」に指定したフィールドから「POS2」に指定したフィールドまでをソートキーにします。「POS2」を省略すると、「POS1」に指定したフィールドから行末までをソートキーにします。
③ -i
印字不可能な文字を無視してソートします。
④ -r
降順にソートします。省略時は昇順にソートします。
⑤ -f
大文字と小文字の区別をせずにソートします。
⑥ -b
行頭のスペースを無視してソートします。
引数
① FILE...
ソートするファイルをスペースで区切って指定します。ワイルドカードによる指定も可能です。
行全体をソートキーにして昇順にソートする
[takeda]$ cat s01 
1:1:2: 2:1:1
3:2:1: 3:2:2
3:2:1: 3:1:1
ファイル「s01」の内容
[takeda]$ cat s02
2:2:1: 1:2:2
3:2:1: 3:1:2
3:2:1: 3:3:1
ファイル「s02」の内容
[takeda]$ sort s01 s02
「s01」と「s02」のすべての内容を、行単位で昇順にソート
1:1:2: 2:1:1
2:2:1: 1:2:2
3:2:1: 3:1:1
3:2:1: 3:1:2
3:2:1: 3:2:2
3:2:1: 3:3:1
フィールドを指定して昇順にソートする
[takeda]$ sort -t: -k5,5 s* 
「:」を区切り文字とし、5つ目のフィールドをソートキーとしてソート
1:1:2: 2:1:1
3:2:1: 3:1:1
3:2:1: 3:1:2
2:2:1: 1:2:2
3:2:1: 3:2:2
3:2:1: 3:3:1
ソートキー
[takeda]$
降順にソートする
[takeda]$ sort -r file01 
オプション「-r」を指定して降順にソート
「A」のASCIIコードの値は「0x41」、「a」はASCIIコードの値は「0x61」で、大文字の方が値が小さい
a003
a002
a001
A003
A002
A001
[takeda]$
大文字と小文字を区別せずにソートする
[takeda]$ sort -f file01 
オプション「-f」を指定して、大文字と小文字の区別をせずにソート
「A001」と「a001」とは同じと見なされ、このような場合には文字コード順に並ぶ
A001
a001
A002
a002
A003
a003
[takeda]$
HINT!

 catコマンド

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5