sort コマンドは、入力されたデータをソート(並べ替え)するためのコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。

基本的な使い方

編集
sort [オプション] ファイル...

主なオプション(GNU coreutils版)

編集
主なオプション
オプション 説明
-n, --numeric-sort 数値としてソート
-r, --reverse 降順にソート
-k, --key=KEY 指定したキーでソート(デフォルトは1列目)
-u, --unique 重複行を削除
-f, --ignore-case 大文字と小文字を区別しない
-t, --field-separator=SEP フィールド区切り文字を指定
-b, --ignore-leading-blanks 行頭の空白を無視
-M, --month-sort 月名を基準にソート(例: Jan, Feb, ...)

データを昇順でソート

編集
sort file.txt

file.txt の内容を昇順にソート。

データを降順でソート

編集
sort -r file.txt

file.txt の内容を降順にソート。

数値としてソート

編集
sort -n file.txt

file.txt の内容を数値として昇順にソート。

重複行を削除してソート

編集
sort -u file.txt

file.txt の内容を昇順でソートし、重複行を削除。

指定した列でソート

編集
sort -k 2 file.txt

file.txt の2列目を基準に昇順でソート。

行頭の空白を無視してソート

編集
sort -b file.txt

行頭の空白を無視してソート。

フィールド区切り文字を指定してソート

編集
sort -t ',' -k 2 file.csv

file.csv のカンマ区切りの2列目を基準にソート。

FreeBSD 版との違い

編集

FreeBSD でも sort コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い:

編集
  1. -M(月名でソート)オプションが FreeBSD にはない
    • FreeBSD の sort には、-M オプションがないため、月名でソートすることはできません。
  2. -k(キー指定でソート)オプションの挙動が異なる
    • FreeBSD 版の sort では、-k オプションの挙動が GNU 版とわずかに異なる場合があります。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gsort という名前で GNU 版 sort が使える。
    pkg install coreutils
    gsort file.txt  # GNU coreutils 版の sort
    

詳しくは、それぞれの環境で man sort を確認してください。