Linuxコマンドsortの使い方と6つのオプション

Linuxコマンドsortは、ファイルや入力データを整列するための非常に便利なツールです。このコマンドを使用すると、テキストファイルやデータの特定の列を基準に、昇順や降順に並べ替えることができ、数字、アルファベット、時間など、さまざまな形式で整列できます。この記事では、sortコマンドの基本的な使い方から複数のオプションについて説明し、実際にどのような場面で有用に活用できるかを紹介します。

sortコマンドの基本的な使い方

sortコマンドは、テキストデータを並べ替える際によく使用されます。通常、テキストファイルのデータを行単位で読み取り、整列した後に出力します。この基本的なコマンドは、filename.txtというファイルの内容を、デフォルトでアルファベットの昇順(辞書順)に整列します。

sort filename.txt
ShellScript

たとえば、次のようなファイルがあるとします。

banana
apple
tomato
cherry
raspberry
Plaintext

sort filename.txtコマンドを実行すると、結果は次のように辞書順に整列されます。

図1. Linuxコマンドsortでテキストファイルの内容を整列
図1. Linuxコマンドsortでテキストファイルの内容を整列

オプションを活用した整列方法の拡張

sortコマンドは、基本的なアルファベット整列だけでなく、さまざまなオプションを提供し、より複雑な整列作業を実行できます。いくつかの主要なオプションを見ていきましょう。

-n: 数字の整列

デフォルトではsortはアルファベット順で並べ替えますが、数字データを扱う場合、-nオプションを使用して数値順に並べ替えることができます。

sort -n number_file.txt
ShellScript

たとえば、次のような内容のファイルがある場合:

12
2
29
30
8
83
Plaintext

-nオプションを使用せずにsortコマンドを実行すると、数値は正しく整列されません。

図2. Linuxコマンドsort: -nオプションを使用しない場合の整列
図2. Linuxコマンドsort: -nオプションを使用しない場合の整列

sort -n 数字ファイル.txtコマンドを実行すると、次のように数値が整列されます。したがって、文字だけでなく数字も正しく並べ替えるには、-nオプションを使用する必要があります。

図3. Linuxコマンドsort: -nオプションを使用して数値を整列
図3. Linuxコマンドsort: -nオプションを使用して数値を整列

-r: 降順の整列

-rオプションは、結果を降順に整列する場合に使用されます。数字やアルファベットの両方に適用できます。

sort -r filename.txt
ShellScript

このコマンドは、通常の辞書順整列を逆に(降順)して出力します。次に、数字と文字が混在するファイルを降順で整列するために、-nオプションと一緒に使用してみましょう。

sort -nr number_file.txt
ShellScript

次のように、数字と文字が整列されることが確認できます。数字と文字が混在している場合、文字、数字の順に整列されることがわかります。

図4. Linuxコマンドsort: -nrオプションで数字と文字が混在する場合の降順整列
図4. Linuxコマンドsort: -nrオプションで数字と文字が混在する場合の降順整列

-k: 特定の列(カラム)を基準に整列

ファイルに複数の列がある場合、特定の列を基準に整列できます。この際に使用するオプションが-kです。

sort -k 2 filename.txt
ShellScript

このコマンドは、ファイルの2列目を基準に並べ替えます。たとえば、次のようなファイルがあるとします。

banana 32
apple 17
tomato 2
cherry 108
raspberry 87
Plaintext

sort -k 2 filename.txtコマンドを実行すると、2列目の数値を基準に整列されます。

図5. Linuxコマンドsort: -kオプションで2列目を基準に整列
図5. Linuxコマンドsort: -kオプションで2列目を基準に整列

-t: 区切り文字の指定

データが空白以外の区切り文字で区切られている場合、-tオプションを使用して区切り文字を指定できます。たとえば、CSVファイルのようにコンマ(,)で区切られたデータを整列する際に便利です。

sort -t ',' -k 2 filename.csv
ShellScript

このコマンドは、コンマを区切り文字として使用し、2列目を基準にデータを並べ替えます。

-u: 重複の削除

整列する際に、重複したデータを削除したい場合は、-uオプションを使用します。このオプションは、重複した項目を1つにまとめて出力します。

sort -u 파일명.txt
ShellScript

次のようなデータがある場合、このオプションを使用してデータの種類を把握できます。

apple
tomato
apple
raspberry
grape
apple
tomato
apple
tomato
apple
grape
Plaintext

実行すると、次のように4種類のデータがあり、昇順に整列されていることが確認できます。

図6. Linuxコマンドsort: -uオプションで重複データを削除
図6. Linuxコマンドsort: -uオプションで重複データを削除

-o: 整列結果をファイルに保存

整列結果をファイルに保存したい場合は、-oオプションを使用します。

sort filename.txt -o sorted_filename.txt
ShellScript

このコマンドは、filename.txtの内容を整列した後、sorted_filename.txtというファイルに結果を保存します。

sortコマンドの活用例

sortコマンドは、単純なファイル整列だけでなく、データ分析やログファイルの処理にも有効です。特に、大量のデータに対して特定のフィールドだけを並べ替えたり、数字、日付、時間などを基準に整列する際には非常に強力なツールとなります。

たとえば、システムログファイルから特定ユーザーの記録を抽出して整列したい場合、grepコマンドと組み合わせて使用できます。このコマンドは、まずgrepで特定ユーザーの記録を抽出し、その後3列目を基準に整列する作業を行います。

grep 'username' filename.txt | sort -k 3
ShellScript

以下の図は、/var/log/syslog内のWARNINGが含まれるログを3列目を基準に整列した例です。

図7. Linuxコマンドsort: grepコマンドと併用してシステムログを整列
図7. Linuxコマンドsort: grepコマンドと併用してシステムログを整列

注意点

  • sortコマンドはデフォルトで辞書順に整列を行うため、数字データを扱う場合は必ず-nオプションを使用する必要があります。
  • 大量のデータを処理する際は、システムリソースを多く使用する可能性があるため、必要に応じてメモリ使用を考慮したオプションも併用するべきです。
  • -oオプションを使用する際に、入力ファイルと出力ファイルを同じファイル名に設定すると、入力ファイルが破損する可能性があるため注意が必要です。

まとめ

Linuxコマンドsortは、データを整列するためのツールです。基本的なアルファベット順整列から、数字や特定の列を基準にした整列まで、さまざまなオプションを提供しており、これを活用すれば複雑なデータ処理作業も簡単に解決できます。特に、ログファイル分析や大規模なデータ処理では非常に有効ですので、ぜひ習得しておくと良いでしょう。さまざまなオプションを組み合わせて使用すれば、効率的にデータを管理できるようになります。

リファレンス

関連ポスト

コメントする