Programming Field

Sort - DOS/コマンドプロンプト コマンド一覧

入力されたテキストデータの各行を文字列として読み取り、それを昇順(または降順)で並び替えて出力します。

※ Cygwin環境や、Git for WindowsがインストールされPathが設定されている場合などは、「sort(.exe)」をそのまま実行するとこれらLinux系統のsortプログラムが実行される場合があります。WindowsコマンドのSort.exeが実行されるかどうかは「sort /?」を実行してコマンドのヘルプが出るかどうかで確認できます。

[PowerShell] 既定では「sort」は「Sort-Object」のaliasとして登録されており、「sort」を使うと「Sort-Object」が動作します。「sort.exe」とはオプションが異なりますが、ほぼ同じ役割のコマンドであること、および「sort.exe」を使う場合は文字コードに注意する必要があることから、PowerShell環境で利用する場合は「sort」(Sort-Object)を利用するのがベターです。

構文

sort[.exe] [/R] [/+<number>] [<file-name>] [/M[EMORY] <memsize>] [/L[OCALE] <locale>]
  [/REC[ORD_MAXIMUM] <record-size>] [/T[EMPORARY] <temp-path>] [/O[UTPUT] <out-file>]

オプション一覧

/R 逆順(降順; ZからAなど)で並び替えます。/R を指定しない場合は通常の順番(昇順; AからZなど)で並び替えます。
/+<number> 並び替える際に判定する最初の文字(何文字目から比較するか)を指定します。<number>には数値を指定します。
<file-name>

[Windows NT?/XP以降] 入力データとなるファイル名を指定します。指定しない場合は標準入力が使用されます。入力リダイレクトを用いることもできますが、このスイッチを使う方が若干速度が速くなります。

[MS-DOS, Windows 95/98/Me] パラメーターにファイル名を指定することはできません。代わりに入力リダイレクトを使用してください。

/M[EMORY] <memsize>

[Windows NT?/XP以降] 並び替え時に用いるメモリのサイズをKB単位の数値で指定します。指定しない場合は既定のメモリサイズを使用します。 (「/M[EMORY]」は「/M」または「/MEMORY」のいずれも可)

この引数によってメモリサイズが指定された場合、現在のメインメモリの使用可能量にかかわらずそのサイズのメモリを使用します。既定のメモリサイズは、入出力ともファイル名が指定されている場合はメインメモリの90%、どちらか、あるいは両方が欠けている場合はメインメモリの45%が使用されます。

/L[OCALE] <locale> [Windows NT?/XP以降] 並び替えに用いるロケール(言語設定)を指定します。<locale>にはロケールを表す文字列を指定しますが、現在は「C」のみ使用できます。 (「/L[OCALE]」は「/L」または「/LOCALE」のいずれも可)
/REC[ORD_MAXIMUM] <record-size> [Windows NT?/XP以降] レコード(1行あたり)の最大文字数を指定します。<record-size>には最大文字数を65535までの数値で指定します。既定は4096です。 (「/REC[ORD_MAXIMUM]」は「/REC」または「/RECORD_MAXIMUM」のいずれも可)
/T[EMPORARY] <temp-path> [Windows NT?/XP以降] 並び替え時に使うメモリが足りない場合に、一時的にデータを保存するためのファイルを作成するディレクトリを指定します。既定ではシステムの一時ディレクトリを使用します。 (「/T[EMPORARY]」は「/T」または「/TEMPORARY」のいずれも可)
/O[UTPUT] <out-file>

[Windows NT?/XP以降] 並び替えた結果のデータを書き込むファイルを指定します。<out-file>にはそのファイル名を指定します。指定しない場合は標準出力に出力されます。出力リダイレクトを用いることもできますが、このスイッチを使う方が若干速度が速くなります。 (「/O[UTPUT]」は「/O」または「/OUTPUT」のいずれも可)

[MS-DOS, Windows 95/98/Me] このスイッチは存在しません。代わりに出力リダイレクトを使用してください。

解説

Sort使用例

このプログラムはテキストファイルの各行を並び替えるのに用いるほか、パイプ「|」を用いて別のコマンドの出力データ(DirFindなど)をアルファベット順に並べ替えて出力するときなどに用いることが出来ます。

※ Linux系の「sort」とは構文が異なりますのでご注意ください。

サンプル1

sort /+3 < foo.txt > bar.txt

「foo.txt」の内容を読み取り、各行の3文字目以降を比較して行単位で並び替えを行い、その結果(昇順)を「bar.txt」に出力します。

サンプル2

sort /+3 foo.txt /O bar.txt

[Windows NT?/XP以降] 「サンプル1」と同じ動作を、リダイレクション「<」「>」を使わずに書き換えた例です。

サンプル3

dir *.exe /B | sort /R | more

Dirコマンドで現在のディレクトリにある拡張子が「exe」のファイルを列挙し、その結果をパイプ「|」を用いてSortに渡し、Sortを使って降順に並び替えて画面に出力します。出力する際、Moreを使って一画面ごとに表示します。