目次
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オプションを使います。