数値ソートとフィールド区切り文字
多くの実際のシナリオでは、数値や複数のフィールドを持つデータが含まれたファイルをソートする必要がある場合があります。sort コマンドはこれらのシナリオに対応するオプションを提供しています。
数値ソート
数値ソートを試すために、数値が含まれたファイルを作成しましょう。
numbers.txt という名前のファイルを作成します。
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- ファイルの内容を表示します。
cat numbers.txt
以下の内容が表示されるはずです。
10
5
100
20
1
50
- このファイルに基本的な
sort コマンドを適用すると、
sort numbers.txt
出力は次のようになります。
1
10
100
20
5
50
これは正しい数値順ではありません。sort はデフォルトで各行をテキストとして扱うため、辞書順では文字列 "100" が "20" の前に来ます。
- 数値順にソートするには、
-n オプションを使用します。
sort -n numbers.txt
これで正しい数値順が表示されます。
1
5
10
20
50
100
複数フィールドを持つファイルのソート
多くの場合、ファイルにはカンマ、タブ、またはスペースなどの区切り文字で区切られた複数のフィールドが含まれています。sort コマンドを使うと、どのフィールドでソートするかを指定できます。
- サンプルデータを含む CSV(Comma-Separated Values、カンマ区切り値)ファイルを作成します。
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
- ファイルの内容を表示します。
cat people.csv
以下の内容が表示されるはずです。
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
- このファイルを 2 番目のフィールド(年齢)でソートするには、
-t オプションでフィールド区切り文字(この場合はカンマ)を指定し、-k オプションでフィールド番号を指定します。
sort -t, -k2,2n people.csv
-t, オプションはフィールド区切り文字をカンマに設定し、-k2,2n は sort に 2 番目のフィールドをソートに使用し、それを数値として扱うよう指示します。
出力は次のようになるはずです。
Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
- 3 番目のフィールド(都市名)でアルファベット順にソートすることもできます。
sort -t, -k3,3 people.csv
出力は次のようになります。
Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle
これらのオプションを使うことで、さまざまなデータ形式のファイルを必要に応じて効果的にソートできます。