sort
フロントエンド


このフロントエンドからは、各行を指定した基準に基づいて並べ替えるcygwinツール(http://sources.redhat.com/cygwin/)のsortプログラムを実行できます。このフロントエンドの「実行」ボタンは、何らかの入力が指定されたときに有効になります。なお、Windowsには、まったく別のオプションを持つsortプログラムがあります。

Windows sortgnu sortには大きな違いがあります。Windows sortは、全角と半角の違いやひらがなとカタカナの違いがあっても、同じ文字は同じ文字だということを判断できます。ですから、

 

うそ

ウソ

ウソ

あんぱん

アンパン

アンパン

1

2

 

というような入力ファイルがあったとき、Windows sortは次のように並べ替えるのに対し、

 

1

2

アンパン

アンパン

あんぱん

ウソ

ウソ

うそ

 

gnu sortは次のように並べ替えます。

 

1

2

あんぱん

うそ

アンパン

ウソ

アンパン

ウソ

 

gnu sortが文字コードの大小のみで並べ替えているのに対し、Windows sortは個々の文字に特別なソートウェイトを与えて並べ替えをします。

 

通常のウィンドウ

のメインダイアログから起動したときのウィンドウ

入力

マイコンピュータ、エクスプローラなどのウィンドウからファイルのアイコンをドラッグしてきてこのウィンドウにドロップすれば、そのファイルが入力ファイルとして使われます。 Windowssortとは異なり、gnusortは複数の入力ファイルを受け付けます。

 

クリップボード  このチェックボックスをクリックすると、「入力ファイル」ダイアログボックスで指定された入力を使わず、クリップボードの内容を標準入力にリダイレクトします。

ファイル      このボタンをクリックすると、「入力ファイル」ダイアログボックスが表示されます。ファイルの順番を指定したいときや、ワイルドカードを使って複数のファイルをまとめて指定したい場合には、このダイアログボックスを使います。

 

入力の指定方法の詳細については、「入力の指定」を参照してください。

オプション

動作モード

 

gnu sortには、ソート、チェック、マージの3種類の基本機能があります。特にオプションを指定しなければ、ソート機能が実行されます。

 

-c 入力がソート済みかどうかをチェックします。ソート済みでなければ、/ubin/sort.exe: -:2: disorder:のようなメッセージを表示します(-は標準入力を表しています。標準入力でなければファイル名が出力されます。2は最初に順番が狂っている行を示しています)。-uを指定した場合でも、メッセージは同じです。

-m ソート済みの複数のファイルを結合し、大きなソート済みファイルを作成します。個々のファイルをソートしてからこのオプションで結合した方が、結合後にソートするよりも高速になります。

-s 安定ソート、すなわち比較によって同じと評価された行の順番を変えないソートを行います。

動作変更

-u -cオプションが指定されている場合には、重複行があるときに警告メッセージを表示します。その他のオプションが指定されている場合には、重複行があるときにそのなかの最初の行だけを出力します。

比較方法

このページのその他のオプション(-z--help--versionを除く)は、比較方法を指定します。これらのオプションは、次ページでソートキーフィールドを指定するときにも使われます。ここでグローバルに指定したオプションは、ソートキーごとに指定されたオプションによってオーバーライドされます(打ち消されます)。

 

-M 空白を除いた最初の3文字を月名と見なし、jan < feb < ... < decの順番で並べ替えます。これら以外の文字の組み合わせは、janよりも前に配置されます。

-b 行を比較するときに、冒頭の空白を取り除きます。

-d 辞書(dictionary)順に並べます。英数字とスペース以外の文字を無視します。

-f 大文字と小文字の違いを無視します。

-i ASCII32(スペース)から126~)に含まれない文字を無視します。

-n 数値と見なして比較します。文字列として比較すると、2100よりも後ろに並べられますが(先頭文字を比較するので)、数値として比較すれば、2100よりも前になります。-bの意味が含まれています。

-r 逆順にします。

-g -nの変種のようですが、私にはよくわかりません。

行末

-z  改行ではなく、\0を行末と見なします。

ヘルプ、バージョン

--help  sort.exeのヘルプメッセージが表示されます。

--version  sort.exeのバージョン番号が表示されます。

 

これらのオプションを指定すると、オプショングループボックス内のほかのオプションは指定できなくなります。

フィールド

 

ソートキーフィールドを特に指定しなければ、行全体がソートキーとして使われます。指定すれば、そのソートキーの部分のみを比較して順位を決めます。複数のソートキーを指定した場合には、第1のキーで同順位になった行のグループが第2のキーによって並べ替えられ、さらにそこでも同順位になった行のグループが第3のキーによって並べ替えられるようです。

ソートキーフィールドは、2通りの方法で指定できます。

 

-k POS1,POS2 POS1からPOS2まで(POS2を含む)をソートキーフィールドとして指定します。POS2を指定しなければ、行末までを指定したことになります。フィールド、フィールド内の文字位置(後述)は1から数えます。

+POS1 -POS2 POS1からPOS2の直前まで(POS2を含まない)をソートキーフィールドとして指定します。POS2を指定しなければ、行末までを指定したことになります。フィールド、フィールド内の文字位置(後述)は0から数えます。古くから使われている形式ですが、-kの登場により、廃れつつあります。

 

POS1POS2は、あるドキュメントによれば、フィールド[.文字位置][オプション]という形式で指定するとされています。「文字位置」は、フィールド内での文字の位置で、たとえば、-k 1.1,1.2とすれば、第1フィールドの1文字目から2文字目を指定できます。旧方式で同じことを表現するには、+0.0 -0.2とします。「オプション」としては、比較方法の項で説明したオプションを使うことができます。たとえば、-k 2,2nを指定した場合、第2フィールドを数値として評価したときの順番で各行を並べ替えます。もっとも、POS1POS2で別のオプションを指定しても意味のある動作はできないようなので、このフロントエンドでは、-kオプションを使う場合にはPOS1,POS2の指定全体の末尾にオプションを指定し、旧方式を使う場合にはPOS1POS2の双方に同じオプションを指定するようにしています。

これらのソートキー指定を追加するには、このページの「追加」ボタンを押します。すると、次のようなダイアログボックスが表示されます。

 

 

最上部のチェックボックスをチェックすると、-kオプション、そうでなければ旧形式を使います。「から」の前のエディットボックスには、POS1のフィールド、文字位置まで、「まで」の前のエディットボックスには、POS2のフィールド、文字位置までの部分を入力します。そして、「フィールドオプション」の下のエディットボックスに入力した内容がオプションとしてPOS1POS2の双方で使われます。

リストコントロールに表示されているソートキー指定を選択して「編集」ボタンを押すか、ダブルクリックすると、「フィールド範囲編集」ダイアログボックスにその内容が表示されます。内容を変更して「OK」ボタンを押し、指定内容に問題がなければ、そのソートキー指定は新しい内容に書き換えられます。指定内容に問題がある場合には、エラーメッセージが表示され、「フィールド範囲編集」ダイアログボックスはクローズされずに残ります。

リストコントロールに表示されているソートキー指定を選択して「除去」ボタンを押すか、[Delete]キーを押すと、その指定はリストコントロールから取り除かれます。

何をソートキーフィールドと見なすかを変更することもできます。

 

-t フィールド区切り文字を指定しなければ、空白以外の文字と空白文字の間がフィールドの区切りと見なされます。たとえば、「foo bar」は、「foo」と「 bar」(barの前にスペースが1つ)という2つのフィールドと見なされます。このオプションでフィールド区切り文字を指定すると、その文字を除いた部分がフィールドになります。たとえば、-t " "を指定したとき、「foo bar」は、foo」と「bar」(barのみ)という2つのフィールドと見なされます。

出力

通常、出力ファイル名を指定する必要はありません。指定しなければ、出力は一時ファイルに書き込まれ、その一時ファイルが指定されたテキストエディタによってオープンされます。しかし、ファイル名を指定すれば、出力はそのファイルにリダイレクトされ、テキストエディタにもそのファイルが渡されます。また、中央のエディットボックスにファイル名が表示され、その下の「追加」チェックボックスをチェックできるようになります。「追加」チェックオックスをチェックすると、そのファイルの元の内容の末尾に出力を書き足します。出力の指定方法の詳細は、「出力の指定」を参照してください。

コマンド行

出力グループボックスの下の行には、組み立てたコマンド行が表示されます。(pipeline)の「編集」ボタンで起動したときを除き、コマンド行の左側の四角形をマウスでクリックしてドラッグしていくと、他のcmdline)にドロップできます。また、「コピー」ボタンを押すと、コマンド行情報がクリップボードにセットされます。クリップボードにコマンド行情報がセットされているときに、マウスの右ボタンをクリックし、コンテキストメニューから「貼り付け」を選択すると、クリップボードのコマンド行情報が反映されます。ドラッグアンドドロップとコピーアンドペーストの詳細は、「ドラッグアンドドロップとコピーアンドペースト」を参照してください。エキスポート、インポートされるときのコマンド行情報の形式については、「コマンド行情報のやり取りの仕組み」を参照してください。さらに、「.batロード」、「.bat保存」ボタンを使えば、同じ形式のコマンド行情報を.batファイルとして保存し、あとでロードすることができます。このロード、保存機能の詳細は、「.batファイルのロードと保存」を参照してください。

作業ディレクトリの設定

作業ディレクトリを表示しているエディットボックスを直接編集したり、マイコンピュータ、エクスプローラなどからフォルダを1つだけドロップしたりすると、作業ディレクトリを変更できます。「ChDir」ボタンでも、作業ディレクトリを設定できます。作業ディレクトリの設定が必要になるのは、入力ダイアログボックスの「直接指定する」を使うときです。詳しくは、「作業ディレクトリ」を参照してください。

設定

設定」ボタンを押すと、「設定」ダイアログボックスが表示されます。このダイアログボックスでは、

 

*出力の表示に使うテキストエディタ

*エクスプローラなどからファイルやフォルダをドロップしたときの確認メッセージの有無

*出力の末尾に実行したコマンド行、実行時間などを付加するかどうか

*コマンド行プログラムに渡すファイル名のディレクトリ区切り子を\ではなく/にするかどうか

*コマンド行プログラムに渡すファイル名を8.3形式にするかどうか

*コマンド行プログラムとしてどれを使うか

 

を指定できます。詳しくは、「設定ダイアログボックス」を参照してください。

opt保存

opt保存」ボタンを押すと、「オプション」グループボックス内の設定が保存されます。詳しくは「オプション保存」を参照してください。