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フィールドでソートし、最も大きいフィアルを最初に表示する。