Bash 速習チュートリアル

Bash sortコマンド

1. sortコマンドの使用方法

sortコマンドは、テキストファイルの行を並び替えるために使用されます。
ファイル内のデータを整理・構造化する際に非常に便利なツールです。

1.1 基本的な使い方

ファイルをソートするには、sort ファイル名 の形式で使用します。

例:

sort fruits.txt
# 出力結果:
apples,1
bananas,2
bananas,4
kiwis,3
kiwis,3
oranges,20

2. オプション

sortコマンドには、動作をカスタマイズするための様々なオプションが用意されています。

  • -r - 逆順(降順)でソートする
  • -n - 数値として正しくソートする
  • -k - 特定のカラム(列)を指定してソートする
  • -u - 重複した行を削除する
  • -t - フィールドの区切り文字(デリミタ)を指定する

2.1 逆順にソートする

-rオプションを使用すると、データを逆順(降順)で並び替えることができます。
このオプションを指定しない場合、sortは昇順で並び替えます。

例:逆順にソート

sort -r fruits.txt
# 出力結果:
oranges,20
kiwis,3
kiwis,3
bananas,4
bananas,2
apples,1

3. フィールド区切り文字の指定

-tオプションを使用すると、フィールドの区切り文字(デリミタ)を指定できます。これは、CSVファイルなど特定の文字で区切られたファイルをソートする際に役立ちます。
このオプションを指定しない場合、sortはデフォルトで空白(スペースやタブ)を区切り文字として扱います。

例:区切り文字を指定してソート
(ここではカンマをデリミタにし、2番目のカラムでソートしています)

sort -t "," -k2,2 fruits.txt
# 出力結果:
apples,1
bananas,2
oranges,20
kiwis,3
kiwis,3
bananas,4

※この例では、数値が辞書順で評価されていることに注意してください(20が3より前に来ています)。

4. 特定のカラムでソートする

-kオプションを使用すると、ソートの基準とするカラムを指定できます。
指定しない場合、sortは行全体をキーとして使用します。

例:特定のカラムでソート

sort -t "," -k2,2 fruits.txt
# 出力結果:
apples,1
bananas,2
oranges,20
kiwis,3
kiwis,3
bananas,4

5. 数値として正しくソートする

-nオプションを使用すると、文字列ではなく数値として比較を行います。
これを使わない場合、数値は辞書順(レキシコグラフィカル)に並ぶため、"10" が "2" よりも前に配置されてしまいます。

例:数値として正しくソート

sort -t "," -n -k2,2 fruits.txt
# 出力結果:
apples,1
bananas,2
kiwis,3
kiwis,3
bananas,4
oranges,20

6. 重複行の削除

-uオプションを使用すると、出力から重複した行を削除します。このオプションがない場合、同じ内容の行はすべて保持されます。

例:重複行の削除

sort -u fruits.txt
# 出力結果:
apples,1
bananas,2
bananas,4
kiwis,3
oranges,20

7. 複雑な条件でのソート

sortは、複数の条件を組み合わせた複雑な並び替えも実行可能です。
例えば、sort -t "," -k1,1 -k2,2r fruits.txt は、まず第1カラムでソートし、次に第2カラムを逆順でソートします。

例:複雑なソート

sort -t "," -k1,1 -k2,2r fruits.txt
# 出力結果:
apples,1
bananas,4
bananas,2
kiwis,3
kiwis,3
oranges,20