はじめに
こんにちは!今回はsortコマンドについて解説します。
sortは、テキストファイルの行を並べ替えるコマンドです。アルファベット順、数値順、逆順など、様々な並べ替えができます。データ整理に欠かせないコマンドです。
sortコマンドとは
sortは、テキストの各行をソート(並べ替え)するコマンドです。
デフォルトでは辞書順(アルファベット順)にソートしますが、数値として扱ったり、特定の列でソートしたり、重複を削除したりもできます。ログ解析やデータ処理で超よく使います。
基本構文
|
|
主なオプション
| オプション | 説明 |
|---|---|
-r |
逆順(降順)にソート |
-n |
数値としてソート |
-h |
人間が読みやすいサイズ単位でソート(K, M, Gなど) |
-k フィールド |
指定した列(フィールド)でソート |
-t 区切り文字 |
フィールドの区切り文字を指定 |
-u |
重複行を削除(uniqと同じ) |
-f |
大文字小文字を区別しない |
-b |
先頭の空白を無視 |
-o ファイル |
結果をファイルに出力 |
-c |
ソート済みかチェック |
-M |
月名でソート(Jan, Feb…) |
使用例
例1: 基本的なソート
|
|
実行結果:
|
|
アルファベット順(昇順)にソートされます。
例2: 逆順(降順)にソート
|
|
実行結果:
|
|
例3: 数値としてソート
|
|
実行結果(文字列ソート):
|
|
文字列として比較されるので、“100"が最初に来ます。
|
|
実行結果(数値ソート):
|
|
-nオプションで数値として正しくソートされます。
例4: 人間が読みやすいサイズでソート
|
|
実行結果:
|
|
サイズ単位(K, M, G)を理解してソートします。
例5: 特定の列(フィールド)でソート
|
|
実行結果:
|
|
2列目(年齢)でソート。
|
|
実行結果:
|
|
3列目(都市名)でソート。
例6: カンマ区切り(CSV)のソート
|
|
実行結果:
|
|
-t ','でカンマ区切りを指定し、2列目でソート。
例7: 重複行を削除
|
|
実行結果:
|
|
ソートしながら重複を削除します。
例8: 大文字小文字を区別しない
|
|
実行結果:
|
|
大文字小文字を無視してソート。
例9: 複数のキーでソート
|
|
実行結果:
|
|
1列目でソート後、3列目で数値の降順ソート。
例10: ソート結果をファイルに保存
|
|
結果をsorted_names.txtに保存します。
例11: ファイルがソート済みかチェック
|
|
ソート済みなら何も出力されません。ソートされていない場合はエラーメッセージが表示されます。
例12: 月名でソート
|
|
実行結果:
|
|
月の順序を理解してソートします。
実践的な使い方
ログファイルのアクセス数集計
|
|
IPアドレス別のアクセス数をカウントして、トップ10を表示。
ファイルサイズでソート
|
|
ファイルサイズ順に表示。
CSVファイルの特定列でソート
|
|
3列目で数値ソートして新しいファイルに保存。
プロセスをメモリ使用量でソート
|
|
メモリ使用量の多いプロセストップ10。
日付でソート
|
|
実行結果:
|
|
ISO形式(YYYY-MM-DD)なら自然にソートされます。
重複行のカウント
|
|
各行の出現回数を数えて、多い順に表示。
複数ファイルのマージとソート
|
|
複数ファイルを結合してソート。
特定の範囲でソート
|
|
コロンを区切りとして2番目のフィールドでソート。
バージョン番号のソート
|
|
実行結果:
|
|
-Vオプションでバージョン番号を正しくソート。
ランダムにシャッフル
|
|
行をランダムに並べ替えます。
Tips・注意点
-
数値ソートには-n: 文字列ソートと数値ソートは結果が異なる
1 2sort numbers.txt # 文字列ソート sort -n numbers.txt # 数値ソート -
元のファイルを上書きしない:
>でリダイレクトすると空になる1 2sort file.txt > file.txt # 危険!ファイルが空になる sort file.txt -o file.txt # 正しい方法 -
安定ソート:
-sオプションで同じ値の順序を保つ1sort -s -k 2 file.txt -
ロケールの影響: ソート順序はロケールに依存
1LC_ALL=C sort file.txt # C言語ロケールで確実なソート -
大容量ファイル: メモリが足りない場合は一時ファイルを使用
1sort -T /tmp large_file.txt -
列の指定方法:
1 2 3sort -k 2 # 2列目から行末まで sort -k 2,2 # 2列目のみ sort -k 2.3 # 2列目の3文字目から
sortとuniqの組み合わせ
sortとuniqはセットで使うことが多いです。
|
|
まとめ
今回はsortコマンドについて解説しました。
ポイント:
sortでテキストの行を並べ替えられる-rで逆順、-nで数値ソート-kで特定の列でソート-tで区切り文字を指定-uで重複削除-hで人間が読みやすいサイズでソートuniqと組み合わせて重複処理
sortはデータ処理の基本中の基本です。ログ解析、CSV処理、集計など、あらゆる場面で使います。特にuniqとの組み合わせは覚えておくと便利ですよ。
次回もLinuxコマンドの学習を続けていきましょう!