sortコマンドでデータを並べ替える方法【オプション一覧付き】

先生

sortコマンドでデータ操作マスターに!

sortコマンドとは?基本と使い方

LinuxやmacOSなどのUnix系OSで利用できるsortコマンドは、テキストファイルを並べ替えるための強力なツールです。ファイルの内容を行単位で読み込み、指定された基準に基づいて並べ替えて出力します。

データの整理や分析において、sortコマンドは非常に役立ちます。ログファイルの解析、CSVデータの処理、テキストデータの整形など、様々な場面で活用できます。

基本的な使い方は以下の通りです。

sort ファイル名

上記のコマンドは、指定されたファイルをアルファベット順に並べ替えて標準出力に出力します。元のファイルは変更されません。結果をファイルに保存する場合は、リダイレクトを使用します。

sort ファイル名 > 並べ替え後のファイル名

sortコマンドの主要オプション一覧

sortコマンドには、様々なオプションが用意されており、より柔軟な並べ替えが可能です。ここでは、主要なオプションを一覧で紹介します。

-n, –numeric-sort: 数値としてソートします。デフォルトでは文字列として比較されるため、数値の大小で並べ替えたい場合に有効です。

sort -n ファイル名

-r, –reverse: 降順(逆順)にソートします。

sort -r ファイル名

-k, –key=フィールド番号[,文字位置]: 指定されたフィールド(列)をソートキーとして使用します。CSVファイルなどで特定の列を基準にソートしたい場合に便利です。文字位置を指定することで、フィールド内の特定の位置から比較を開始できます。

sort -k 2,2 ファイル名  # 2番目のフィールドをソートキーとする

-t, –field-separator=区切り文字: フィールドの区切り文字を指定します。デフォルトは空白文字です。CSVファイルなどを処理する際に、カンマなどを区切り文字として指定します。

sort -t',' -k 2,2 ファイル名  # カンマ区切りの2番目のフィールドをソートキーとする

-u, –unique: 重複する行を削除します。ソート結果から重複した行を取り除きたい場合に利用します。

sort -u ファイル名

-f, –ignore-case: 大文字と小文字を区別せずにソートします。

sort -f ファイル名

-b, –ignore-leading-blanks: 行頭の空白を無視します。

sort -b ファイル名

-m, –merge: ソート済みのファイルをマージします。

sort -m ファイル1 ファイル2 > マージ後のファイル

-o, –output=ファイル: ソート結果を指定したファイルに出力します。リダイレクトを使わずに結果をファイルに保存できます。

sort -o 出力ファイル ソート対象ファイル

実践的なsortコマンドの例

ここでは、sortコマンドの具体的な使用例をいくつか紹介します。

例1: 数値で降順にソートする

ファイルnumbers.txtに数値データが格納されているとします。これを数値で降順にソートするには、-nオプションと-rオプションを組み合わせます。

sort -n -r numbers.txt

例2: CSVファイルの2番目の列を基準にソートする

ファイルdata.csvがカンマ区切りのCSVファイルであるとします。2番目の列を基準にソートするには、-tオプションで区切り文字をカンマに指定し、-kオプションで2番目のフィールドを指定します。

sort -t',' -k 2,2 data.csv

例3: ログファイルから特定のキーワードを含む行を抽出し、時刻順にソートする

grepコマンドとパイプを組み合わせることで、ログファイルから特定のキーワードを含む行を抽出し、sortコマンドで時刻順にソートすることができます。(時刻の形式に合わせて-kオプションなどを調整してください)

grep 'ERROR' logfile.txt | sort -k 1,1

上記の例では、logfile.txtからERRORというキーワードを含む行を抽出し、1番目のフィールド(時刻)を基準にソートしています。

参考リンク

まとめ

sortコマンドは、テキストデータを効率的に並べ替えるための強力なツールです。オプションを組み合わせることで、様々な条件で柔軟な並べ替えが可能になります。この記事で紹介したオプションや使用例を参考に、sortコマンドを使いこなして、データ処理を効率化しましょう。