Skip to main content

Fujitsu

Japan

検索/比較/ソート:テキストファイルのソート

コマンド

/usr/bin/sort

形式

sort [オプション] ファイル名 ファイル内データのすべての行をソートし、その結果を標準出力に書き込みます。

オプション

-b 行頭の空白を無視します。
-c ソート済みであるかをチェックします。ソート済みである場合は何も表示されません。
-d 辞書順でソートします。
-f 大文字と小文字の区別をしません。
-k 列番号 ソート対象とする列を指定します。カンマで区切って列番号を指定した場合は、番号1~番号2の範囲指定になります。番号2を省略した場合は、行末までが対象です。1列目は1になります。
-m ソート済みのファイルをマージします。
-n 数字でソートします。
-r 逆順にソートします。
-t セパレータで行の区切りを指定します。省略された場合は、空白がセパレータとなります。
-u 同一の行をまとめて表示します。
-k ソート対象にするキー番号を指定します。セパレータで区切った文字からn番目という意味です。

使用例

sort -t "@" -k 2 test03.txt
sort -n test.txt
sort -c test02.txt
sort -m test01.txt test02.txt > merge.txt
sort -u test04.txt
sort -d test05.txt

セパレータを「@」として、キーを2番目に指定します。

# cat test03.txt
0@aa
1@ac
2@ab
3@ad
4@af
5@ae

# sort -t "@" -k 2 test03.txt
0@aa
1@ab
2@ac
3@ad
5@ae
4@af

数字でソートします。

# cat /test.txt
5aaa
4bbb
3ccc
2ddd
1eee
0fff

sort -n test.txt
0fff
1eee
2ddd
3ccc
4bbb
5aaa

ソート済みであるかチェックします。

# cat test02.txt
aaa
bbb
ccc
fff
ddd
eee

# sort -c test02.txt
sort: disorder: ddd              ※未ソートの行が表示されます。

ソート済みの複数ファイルを1つのファイルにマージします。

# cat test01.txt
aaa
bbb
ccc

# cat test02.txt
ddd
eee
fff

# sort -m test01.txt test02.txt > merge.txt

# cat merge.txt
aaa
bbb
ccc
ddd
eee
fff

同一の行をまとめてソートします。

# cat test04.txt
aaa
bbb
ccc
ccc

# sort -u test04.txt
aaa
bbb
ccc

辞書順でソートします。

# cat test05.txt
aaa
bbb
000
111
AAA
BBB
あああ
いいい

# sort -d test05.txt
000
111
AAA
BBB
aaa
bbb
あああ
いいい

関連情報

  • テキストの検索(grep
  • 2つのファイルの比較(diff
  • テキストファイル内の行数表示(wc