Hack 23. Sort コマンド

Sort コマンドはテキストファイルの行をソートします。
次のものは、次のサンプルテキストファイルに基づいて sort コマンドをどのように使用するかについての実践的な例です。
サンプルテキストファイルは、従業員情報をもち以下の形式です。:
employee_name:employee_id:department_name.

$ cat names.txt
Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

テキストファイルを昇順にソートする。

$ sort names.txt
Alex Jason:200:Sales
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Nisha Singh:500:Sales
Sanjay Gupta:400:Support

テキストファイルを降順にソートする。

$ sort -r names.txt
Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Madison Randy:300:Product Development
Emma Thomas:100:Marketing
Alex Jason:200:Sales

コロンで区切られたテキストファイルを第2フィールド(employee_id)でソートする。

$ sort -t: -k 2 names.txt
Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales

タブ区切りのテキストファイルを第3フィールド (department_name) でソートし、重複を排除する。

$ sort -t: -u -k 3 names.txt
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Alex Jason:200:Sales
Sanjay Gupta:400:Support

パスワードファイルを第3フィールド (numeric userid) をソートする。

$ sort -t: -k 3n /etc/passwd | more
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

/etc/hosts ファイルを ip-address でソートする

$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.100.101 dev-db.thegeekstuff.com dev-db
192.168.100.102 prod-db.thegeekstuff.com prod-db
192.168.101.20 dev-web.thegeekstuff.com dev-web
192.168.101.21 prod-web.thegeekstuff.com prod-web

他のコマンドを使用してソートを結合する
o ps –ef | sort : プロセスリストの出力をソートする
o ls -al | sort +4n : ファイルサイズの昇順でファイルをリストする。たとえば、第5フィールドでソートし、最も小さいファイルを最初に表示する。
o ls -al | sort +4nr : ファイルサイズの降順にファイルをリストする。たとえば、第5フィールドでソートし、最も大きいフィアルを最初に表示する。