テキスト処理
sort
テキストの行を並べ替える。uniq と組み合わせた重複除去が定番
SYNTAX
sort [options] [file...] 主なオプション
| オプション | 説明 |
|---|---|
-n | 数値として並べ替え(デフォルトは文字列順) |
-r | 逆順(降順) |
-k <n> | n番目のフィールドをキーに並べ替え |
-t <sep> | フィールドセパレータを指定(デフォルト: 空白・タブ) |
-u | 重複行を除去(uniq 相当) |
-f | 大文字小文字を区別しない |
-h | 人間が読みやすいサイズ(1K, 10M など)で数値比較 |
-V | バージョン番号として比較(1.9 < 1.10) |
使用例
# アルファベット順に並べ替え
sort names.txt
# 逆順(Z〜A)
sort -r names.txt
# 数値として並べ替え(文字列順だと "10" < "9" になってしまう)
sort -n scores.txt
# 数値の降順
sort -nr scores.txt
# 2列目をキーに並べ替え(空白区切り)
sort -k2 data.txt
# CSV の3列目を数値として降順に並べ替え
sort -t, -k3 -nr data.csv
# ディレクトリのサイズを大きい順に表示
du -sh * | sort -rh
# 重複行を除去しながら並べ替え
sort -u tags.txt
uniq との定番コンビ
uniq は隣接する重複しか除去できないため、必ず sort で並べてから渡す。
# 重複除去
sort file.txt | uniq
# 出現回数の多い順にランキング
sort access.log | uniq -c | sort -rn | head -20
安定ソート
# -s オプションで安定ソート(同じキーの要素は元の順序を保つ)
sort -s -k2 data.txt