Section Next | Prev


5.2.2 並び替え(sort)

【機能説明】
ソート(並び換え)を行います。 pos1 で指定したフィールドだけ読み飛ばした所から、 pos2 の直前までをソートします。

【入力フォーマット】
sort [ オプション ] [+pos1 [-pos2]] [file...]

【主なオプション】
-d (dictionary order)
辞書順でソート
-n (numeric sort)
数値としてソート
-r (reverse)
降順にソート
-m (merge)
ソート済みデータをマージ
-u (uniq)
連続した同一行を削除
-f
英大文字・小文字の区別をしない

【実行例1】 ls の出力を並び換える例。(ただし、それぞれ ls -lSr, ls -lS にて代用可能)
$ ls -l
-rw-r--r--   1 yakoshi system    8192 Jan 27 17:20 dat.dic
-rw-r--r--   1 yakoshi system   10240 Jan 27 16:32 spc
-rw-r--r--   1 yakoshi system     477 Jan 27 17:00 test.out
-rw-r--r--   1 yakoshi system    1523 Jan 27 17:27 ycos.log.dat
$ ls -l  | sort +4n	# 4番目のフィールドを数値ソート
-rw-r--r--   1 yakoshi system     477 Jan 27 17:00 test.out
-rw-r--r--   1 yakoshi system    1523 Jan 27 17:27 ycos.log.dat
-rw-r--r--   1 yakoshi system    8192 Jan 27 17:20 dat.dic
-rw-r--r--   1 yakoshi system   10240 Jan 27 16:32 spc
$ ls -l | sort +4nr	# 上記の降順
-rw-r--r--   1 yakoshi system   10240 Jan 27 16:32 spc
-rw-r--r--   1 yakoshi system    8192 Jan 27 17:20 dat.dic
-rw-r--r--   1 yakoshi system    1523 Jan 27 17:27 ycos.log.dat
-rw-r--r--   1 yakoshi system     477 Jan 27 17:00 test.out
【実行例2】 乱数の分析
# 1〜6の範囲で乱数を20個発生させる(サイコロ)
$ for ((n=0;n<20;n++)); do
> let x=$RANDOM%6+1
> echo $x
> done
1
6
3
	:

# 先のサンプルを sort で昇順に並べる
$ $ for ((n=0;n<20;n++)); do
> let x=$RANDOM%6+1
> echo $x
> done | sort -n 
1
1
1
1
1
2
2
2
3
3
	:

# uniq により度数を数える
$ $ for ((n=0;n<1000;n++)); do
> let x=$RANDOM%6+1
> echo $x
> done | sort -n | uniq -c
    173 1
    164 2
    163 3
    163 4
    172 5
    165 6

Section Next | Prev

Copyright 2007-2018 ycosSystems Misc/Body522.html