2011年9月25日日曜日

SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
Windowsコマンド。プログラム実行関連
○Windows XP
ファイルの内容やコマンド出力結果を、並べ替えて表示します。

o 常に文字コード順で比較するみたいです。
    + 数値の比較をしたい時は、前に半角空白を入れて、1の位までの文字数を合わせておきます。
    + 数値に正の数と負の数が混在している場合は、さらに工夫が必要になります。
o 比較結果が全く同じ行が複数ある時、並び順はこのコマンドの実装に依存します。
o 1行の長さ制限があります。
    + このコマンドで並び替え出来るのは、1行の長さが「65534文字 + 改行コード」までのデータです。
    + 1行の長さが「4095文字 + 改行コード」を超える時は、/rec オプションを指定します。


**** 書式
--------
sort [ オプション ] 入力ファイル名 [ /t 作業用フォルダー名 ] [ /o 出力ファイル名 ]
もしくは
sort [ オプション ] < 入力ファイル名
もしくは
実行コマンド | sort [ オプション ]
--------

o コマンド名は、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + /t と /o だけ後ろにしていますが、これはヘルプの記述に合わせました。
    + Windows XPの場合、オプションの記述場所は、ファイル名の前後どちらでも大丈夫みたいです。
SORT コマンドのオプション一覧
名前記述例意味
/+数字/+2比較開始位置(= 文字数)をずらします。
/+2 は2文字目から比較します。
指定した数よりも文字が少ない行は、上に並びます。
/l ロケール名
もしくは
/locale ロケール名
/l "C"ロケールです。文字の比較順序を変更します。
Windows XPでは、大文字の "C" のみ使用可能です。
"C"ロケールは、大文字小文字を区別し、最も高速に比較します、とヘルプの説明にありました。
/m 数字
もしくは
/memory 数字
/m 393並べ替えに使うメモリ量(KB 単位)です。
最小 160KBです。
既定では、使用メモリ量を自動調節します。自動調節時の最大使用メモリ量は、入出力の両方がファイルの時、メインメモリの90%まで。そうでない場合は、メインメモリの45%まで、と、ヘルプの説明にありました。
/r
もしくは
/reverse
/r降順 = 並び替えの順序を逆にします。
/rec 文字数
もしくは
/record_maximum 文字数
/rec 65535行の最大文字数を指定します。
全角文字も1文字と数えます。
最大 65535 = 「65534文字+改行」まで。
指定が無い時の既定値は 4096 = 「4095 文字+改行」
/t 作業用フォルダー名
もしくは
/temporary 作業用フォルダー名
/t d:\ミクさんメモリで処理出来ない時に一時ファイルを作る場所です。
自動実行していて、ドライブの空き容量が心配な時に指定すると安心です。
既定では、システムの一時ディレクトリを使用する、とヘルプの説明にありました。
/o 出力ファイル名
もしくは
/output 出力ファイル名
/o c:\ミクさん出力ファイル名を指定します。
標準出力をリダイレクトするよりも、このオプションを指定した方が速い、とヘルプの説明にありました。
o 入力ファイル名 = ファイルを1つだけ指定します。
    + ファイルのパスの区切り文字は、UNIXの区切り文字「/」を使う事も出来ます。
    + ワイルドカード(「*」や「?」)は使用出来ません。
    + ファイル名の途中に空白を含む時は、ファイル名を「"」(2重引用符)で括ります。
    + 入力ファイル名を省略し、リダイレクトやパイプからの入力も無い時は、次のように動きます。
        + 並び替えたいデータの入力を待ちます。
        + データの入力終了は、Ctrl + Z(= 「Ctrl」キーを押しながら「Z」キー)
o /t 作業用フォルダー名 = 詳しくは、上記のオプション一覧を御覧下さい。
o /o 出力ファイル名 = 詳しくは、上記のオプション一覧を御覧下さい。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功
    + 「警告: 指定されたメモリ サイズは、小さすぎます。最小値に調節します。」 = /m 160 (単位は KB)に変更しました。
o 1 = 失敗
    + 「無効なスイッチです。」 = オプションの書き方を見直して下さい。
    + 「無効なロケールです。」 = ロケールは、大文字の "C" のみ使用出来ます。
    + 「並べ替え位置は、0 より大きくなければなりません。」 =/+ オプションの数字を1以上にして下さい。
    + 「並べ替えを完了する十分なメモリがありません。」 = /m オプションの値を小さくして下さい。
    + 「レコードの最大長は、65535 を超えられません。」 = /rec オプションの値を小さくして下さい。
    + 「入力ファイルが 2 度指定されました。」 = 空白付きのファイル名などを指定する時は「"」で括ります。
    + 「入力レコードが最大長を超えました。より大きい最大長を指定してください。」 = /rec オプションの値を大きくして下さい。
    + 「c:\ネギ\out.txt指定されたパスが見つかりません。」 = 指定したファイル名やフォルダー名を見直して下さい。


**** 使用例
--------
sort ミクさんのネギ.txt

dir /b c:\ミクさん | sort /r
--------

    + コマンド名やキーワードは、大文字で書く事も出来ます。


**** 機能
o ファイルの内容やコマンド出力結果を、並べ替えて表示します。
o オプションを指定しない時、1行の文字数が「4095 文字 + 改行コード」までのデータを並び替える事が出来ます。
    + 全角文字が含まれていても同じです。
    + 足りない時は、/rec オプションを使います。
o 常に文字コード順で比較するみたいです。
    + 数値の比較をしたい時は、前に半角空白を入れて、1の位までの文字数を合わせておきます。
    + 数値に正の数と負の数が混在している場合は、さらに工夫が必要になります。
        + 例えば、行の先頭に、「数値に大きな数を加えた、必ず正の数になる」列を追加しておく方法があります。
        + もちろん、SORTコマンド以外の外部ツールを使って並び替える方法もあります。
o 行の途中から比較する事も出来ます。
o 比較結果が全く同じ行が複数ある時、並び順はこのコマンドの実装に依存します。
o このコマンドは、入力ファイルを属性に関わらず認識します。
    + 「システムファイル属性」や「隠しファイル属性」のファイルを入力する事が出来ました。

** このコマンドの制限事項
o 1行の最大文字数は、「65534文字 + 改行コード」まで。(= /rec 65535 指定時)
    + 65535文字以上の行が見つかると、エラーになります。
    + 全角文字が含まれていても同じです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド。プログラム実行関連▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    ▼目次
    > COPY = ファイルをコピーする
    COPYコマンドの /Aと/Bの意味
    > 変数 %0 = 実行中のバッチファイル名、もしくはCALLラベル名
    変数 %1 = バッチファイルやCALL文の最初の引数
(2011年9月26日追加。データ中に正負の数が混在している時の並べ方)
(2011年9月25日変更。/tと/oの指定位置について、ヘルプの並び順に準拠)