SORT(行の並べ替え)
名簿やログ、dir の出力などを「名前順に並べ替えたい」と思ったことはないでしょうか。表計算ソフトを開かなくても、コマンドプロンプトだけで行単位の並べ替えができます。
SORT コマンドは、テキストの各行を並べ替えて表示するコマンドです。ファイルの内容だけでなく、パイプで受け取ったほかのコマンドの出力も並べ替えられます。
基本的な使い方
SORT コマンドの構文は次の通りです。
SORT [オプション] [ファイル名]
たとえば、次のような fruits.txt があるとします。
banana
Cherry
apple
ファイル名を指定して実行すると、各行が昇順に並べ替えられて表示されます。
SORT は並べ替えた結果を画面に出力するだけで、fruits.txt 自体は書き換えません。結果を保存する方法は後述します。
既定では、大文字と小文字は区別せずに並べ替えられます。上の例でも、大文字で始まる Cherry が banana の後ろに並んでいます。
PowerShell では sort が Sort-Object のエイリアスになっているため、この記事のコマンドは同じようには動作しません。PowerShell から使う場合は sort.exe と入力してください。
パイプで出力を並べ替える
ファイル名を省略すると、SORT は標準入力から受け取ったテキストを並べ替えます。パイプ(|)と組み合わせれば、ほかのコマンドの出力を並べ替えられます。

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
dir /b で取得したファイル名の一覧が、名前順に並べ替えられます。
同じように、ファイルを type で読み込んで渡すこともできます。
また、入力リダイレクトでファイルを渡す方法もあります。
SORT コマンドのオプション
よく使うオプションは次の通りです。
| オプション | 説明 |
|---|---|
/R | 降順(逆順)に並べ替える |
/+n | n 文字目から比較して並べ替える |
/O ファイル | 並べ替えた結果を指定したファイルに出力する |
/L ロケール | 並べ替えに使うロケールを指定する(実質的に "C" のみ有効) |
/M キロバイト | 並べ替えに使うメインメモリの量を KB 単位で指定する |
/REC 文字数 | 1行の最大文字数を指定する(既定は 4,096、最大は 65,535) |
/T パス | 作業用の一時ファイルを置くフォルダを指定する |
/R - 降順に並べ替える
/R を付けると、逆順(降順)になります。
/+n - 列の位置を指定して並べ替える
既定では行の先頭から比較しますが、/+n を付けると n 文字目から比較します。固定幅で書かれたデータを、途中の項目で並べ替えたいときに便利です。
Tanaka 85
Suzuki 92
Sato 78
名前は8文字幅に揃えてあるので、点数は9文字目から始まります。
点数の昇順に並びました。降順にしたい場合は /R を併用します。
/+n を指定したとき、n 文字に満たない短い行は、ほかのすべての行より前に並べられます。空行もこれに含まれます。
/L C - 文字コード順に並べ替える
/L C を指定すると、ロケールに依存せず、文字コードの値そのままの順序で並べ替えます。この場合は大文字と小文字が区別され、大文字が小文字より前に並びます(Cherry が先頭になります)。
並べ替えた結果をファイルに保存する
結果をファイルに保存するには、/O オプションで出力先を指定します。
もちろん、リダイレクト(>)でも保存できます。
sort fruits.txt > fruits.txt のように、入力と同じファイルへリダイレクトすると、SORT が読み込む前に fruits.txt が空にされてしまい、内容が失われます。並べ替えた結果は、別のファイルに出力してください。
数字は文字として並べ替えられる
SORT は、数字も「文字」として1文字ずつ比較します。そのため、数値の大小どおりには並びません。
10
2
33
1
10 が 2 より前に来ているのは、先頭の文字 1 が 2 より小さいためです。数値の順に並べたい場合は、桁数を揃えて、先頭を 0 で埋めておく方法があります。
10
02
33
01
数値の大小で並べ替えたい場合は、PowerShell の Sort-Object を使うと、型を指定して数値として並べ替えられます。
実践例
ログから抽出した行を並べ替える
findstr で抽出した行を、並べ替えて確認できます。
実行中のプロセスを名前順に表示する
tasklist の出力を名前順に並べ替えます。/nh はヘッダー行を省略するオプションです。
長い結果を1画面ずつ確認する
並べ替えた結果が長い場合は、more と組み合わせると便利です。
SORT はコンソールの文字コード(コードページ)に従ってテキストを読み込みます。UTF-8 で保存されたファイルなどを渡すと、日本語が文字化けしたり、期待した順序にならなかったりすることがあります。詳しくは関連記事の文字コードの解説を参照してください。
まとめ
| やりたいこと | コマンド |
|---|---|
| 昇順に並べ替える | sort ファイル名 |
| 降順に並べ替える | sort /R ファイル名 |
| 出力を並べ替える | コマンド | sort |
| 途中の列から並べ替える | sort /+n ファイル名 |
| 結果をファイルに保存する | sort ファイル名 /O 出力先 |
| 文字コード順に並べ替える | sort /L C ファイル名 |