sortコマンドの使い方

sortコマンドの使い方

sortコマンドは並び替えを行うコマンドです。出力された結果を見やすくまとめたり、uniqで要素をカウントしたりする際に使います。

sortはそのまま使うことで並び替えてくれます

# cat numb
1
3
2
4
1
10
20
12

# cat numb |sort

1
1
10
12
2
20
3
4

しかし、数字は左の桁を優先して並び替えるので、10が2よりも小さく並び替えられてしまいます。数字の場合は-nオプションを使うと自然な数字の並び順に変えてくれます。

root@raspberrypi:/home/pi/test# cat numb |sort -n

1
1
2
3
4
10
12
20

ソートを逆順に並び替えるには-rを使います。

# cat numb |sort -nr
20
12
10
4
3
2
1
1

表形式のデータを並び替え

表形式のデータの場合どこかの列を選択して並び替えたいという場合があります。

table
# cat df.txt 
/dev/root         27805208 7106684 19263056   27% /
devtmpfs            469532       0   469532    0% /dev
tmpfs               474140       0   474140    0% /dev/shm
tmpfs               474140    6392   467748    2% /run
tmpfs                 5120       4     5116    1% /run/lock
tmpfs               474140       0   474140    0% /sys/fs/cgroup
/dev/mmcblk0p6      258094   52232   205863   21% /boot
tmpfs                94828       0    94828    0% /run/user/1000

このデータの2番目の数字を並び替えたいという場合です。

table
# cat df.txt | sort -k 2,2 -n
tmpfs                 5120       4     5116    1% /run/lock
tmpfs                94828       0    94828    0% /run/user/1000
/dev/mmcblk0p6      258094   52232   205863   21% /boot
devtmpfs            469532       0   469532    0% /dev
tmpfs               474140       0   474140    0% /dev/shm
tmpfs               474140       0   474140    0% /sys/fs/cgroup
tmpfs               474140    6392   467748    2% /run
/dev/root         27805208 7106684 19263056   27% /

kオプションで-k 2の場合は2列目~最終列までを考慮して並び替えされるので二列目だけで並び替えてほしい場合は2,2とします。2,3とすると2列目優先、3列目も含めて並び替えられます。

列を指定する場合は-kオプションは空白を区切り文字として、2番目の列を並び替えます。-nで自然な数字の順番で並び替えています。もしcsv形式のファイルの場合は区切り文字がカンマのため-tでカンマを指定します。(sort -k 2,2 -t ,)

IPアドレスを並び替えしたい場合は-Vオプションを使います。

大文字小文字を無視したい場合は-fオプションを使います。

コメントを残す

メールアドレスが公開されることはありません。