Sort (UNIX)

sortコマンドとは



sortコマンドは、UNIX系オペレーティングシステムに標準で搭載されている、テキスト処理のための強力なコマンドラインツールです。主に、テキストファイルの各行を指定した規則に従ってソート(並べ替え)するために用いられます。このコマンドを使うことで、大量のテキストデータを効率的に整理し、特定の情報を探しやすくすることができます。

基本的な使い方



sortコマンドの最も基本的な使い方は、引数として与えられたファイルの内容を、デフォルトでは行の先頭から文字コード順にソートして標準出力に表示することです。

bash
sort file.txt


この例では、`file.txt`というファイルの内容を行ごとにソートし、その結果を画面に表示します。

様々なソートオプション



sortコマンドには、ソートの動作を細かく制御するための様々なオプションが用意されています。以下に代表的なオプションとその使用例を示します。

数値ソート (-n オプション)


テキストファイルに数値データが含まれている場合、`-n`オプションを使用することで、数値を正しく比較してソートすることができます。このオプションがない場合、数値は文字列として扱われ、期待通りの結果にならないことがあります。

bash
sort -n numbers.txt


`numbers.txt`というファイルに数値データが含まれている場合、上記のコマンドで数値の小さい順にソートされます。

カラム指定ソート (-k オプション)


テキストデータが複数のカラム(列)で構成されている場合、特定のカラムを基準にしてソートすることができます。`-k`オプションに続けてカラム番号を指定することで、そのカラムをソートのキーとして使用できます。

bash
sort -k 2 data.txt


この例では、`data.txt`ファイルの2番目のカラムをキーとしてソートします。

逆順ソート (-r オプション)


ソート結果を降順(逆順)で表示したい場合は、`-r`オプションを使用します。例えば、数値データを大きい順にソートする場合などに便利です。

bash
sort -nr data.txt


この例では、`data.txt`ファイルの各行を、数値として解釈した上で大きい順にソートします。

その他のオプション


その他にも、空白以外の文字を区切り文字として指定する`-t`オプション、重複行を削除する`-u`オプションなど、様々なオプションがあります。これらのオプションを組み合わせることで、より複雑なソート処理が可能になります。

具体的な使用例



1. ファイルサイズ順にソート: カレントディレクトリにあるファイルをファイルサイズ順にソートし、一覧表示する場合。

bash
ls -l | sort -n -k 5


`ls -l`コマンドでファイルのリストを表示し、その結果を`sort`コマンドにパイプで渡しています。`-n`オプションで数値ソートを指定し、`-k 5`で5番目のカラム(ファイルサイズ)をキーとしてソートしています。

2. 名簿をアルファベット順にソート: 名簿データが格納されたファイルを行単位でアルファベット順にソートする場合。

bash
sort namelist.txt


`namelist.txt`ファイルを、デフォルト設定でアルファベット順にソートして表示します。

3. 複数のキーでソート: 複数のカラムをキーとしてソートすることも可能です。例えば、最初に2番目のカラムでソートし、次に3番目のカラムでソートする場合。

bash
sort -k 2 -k 3 data.txt


この場合、2番目のカラムが同じ値の場合は、3番目のカラムでソートされます。

注意点



古いバージョンの`sort`コマンドでは、`+`記号を用いたカラム指定方法が利用されていましたが、現在では`-k`オプションが推奨されています。

まとめ



sortコマンドは、UNIX環境でテキストデータを扱う上で不可欠なツールの一つです。多様なオプションを使いこなすことで、複雑なデータ整理も効率的に行うことができます。日常的なデータ処理から、ログ分析まで、幅広い場面で活用できるでしょう。

外部リンク



Manpage of SORT JM Project
sort(1) man page(SunOS リファレンスマニュアル)
* sort(1) man page(HP-UX リファレンス)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。