sogayaのプログラミング

コマンドユーザーズガイド、さらしの集計、トリシーカー、ビンゴマスク、ロトサマリー

Java版のGrepに基づいてC#で構築

AceGrepをアップロードしました! Java版のGrep(Version 1.28)に基づいて、C#でAceGrepを構築しました。AceGrepは、コンソールアプリケーションです。AceGrepは、WindowsのDIRコマンドを実行して、検索対象のファイルのリストを作成します。ファイル名のリストをfileName.txtと命名します。acegrepコマンドのパラメータとして、-uが付加された場合、AceGrepは、lsコマンドを実行して、fileName.txtを作成します。DIRコマンドと異なり、lsコマンドは、ファイル名の大文字と小文字を区別します。lsコマンドと同様に、AceGrepに内蔵のAceListは、ファイル名の大文字と小文字を区別できます。acegrepコマンドのパラメータとして、--inが付加された場合、AceGrepは、DIRコマンドもlsコマンドも実行しないで、AceListでfileName.txtを作成します。事前に利用者がfileName.txtを用意した場合、しかもacegrepコマンドのパラメータとして、-b-が付加された場合、AceGrepは、DIRコマンドもlsコマンドもAceList機能も実行しないで、利用者提供のfileName.txtを使用します。DIRコマンドではなくlsコマンドを利用する場合、利用者は、UNIXのシェルのワイルドカードを使用できますが、ファイル名の正規表現も使用できます。同様に、AceGrepに内蔵のAceListを利用する場合、UNIXのシェルのワイルドカード正規表現も使用できます。コマンドプロンプトのウィンドウとは独立したSideAceウィンドウが表示されます。SideAceは、ACEを監視しています。リダイレクトでACEに書き込まれたとき、SideAceウィンドウに内容を表示します。SideAceは、ACEをUTF-8で保存できます。Visual C# 2008 ExpressまたはVisual Studio 2010で構築されています。.NET Framework 3.5または.NET Framework 4を利用できます。ソースコードを添付しました。アーカイブのファイル名は、AceGrep.zipです。-u -gが指定された場合、AceGrepは、カレントディレクトリにあるファイルのパス名を表示しますが、パス名を表示しないように命令するには、パラメータとして、-p-を付加してください。-uのみである場合、シェルのワイルドカードによりカレントディレクトリを検索できます。-uおよび-gが指定された場合、シェルのワイルドカードまたは正規表現によりカレントディレクトリを検索できます。-uおよび-rが指定された場合、シェルのワイルドカードまたは正規表現によりカレントディレクトリおよびサブディレクトリを検索できます。ただし、-u -rの場合、多数のファイルを引用符で囲んでlsコマンドにわたすことができません。-uおよび-gが指定された場合も、-uおよび-rが指定された場合も、AceGrepは、引用符で囲まれた多数のファイルを処理できませんが、AceGrepに内蔵のAceListは、空白で分離されており引用符で囲まれている多数のファイルを順次、処理できます。AceListは、WindowsC#で書かれていますが、コマンドプロンプトワイルドカードを利用しません。パラメータとして、--inを付加した場合、acegrepコマンドにシェルのワイルドカードを付加してください。シェルのワイルドカードが正しい正規表現に変換されたか確認するには、--reを付加してください。AceGrepは、DIRコマンドでfileName.txtを作成する工程と、正規表現にマッチする行を各ファイルから抽出する工程とからなります。fileName.txtを作成する時間および実行の開始から終了まで経過した時間を表示するには、パラメータとして--elapseまたは-@を付加してください。1ミリ秒の単位で表示されます。fileName.txtを作成する時間は、経過時間に含まれます。1ミリ秒未満を測定できないため、AceGrepのミリ秒の数値は、測定が不正確です。パラメータとして、--tickが付加された場合、AceGrepは、C#のStopwatchクラスを利用して、計数(tick)を表示します。ミリ秒および計数を併用できます。acegrepコマンドのパラメータとして、-#を付加することで、CHCP実行結果の一部を出力できます。標準出力をリダイレクトしたファイルの文字コードは、MS932であることがわかります。日本語のコードページは、932ですが、英語(アメリカ)のコードページは、437または1252です。パラメータとして、--encoding=CP437を付加できます。日本語版Windows文字コードは、Windows-31Jですが、英語版Windows文字コードは、Windows-1252です。パラメータとして、--encoding=CP1252を付加できます。AceGrepにC#版のSideAceを添付しました。これは、Windowsフォームアプリケーションであり、SideAceウィンドウを表示します。SideAceは、ACEというファイルを作成します。ACEは、Windowsのファイル名であるため、大文字と小文字が区別されません。SideAceは、ACEを監視しています。AceGrepの出力をACEにリダイレクトしたとき、SideAceウィンドウに出力が表示されます。コマンドプロンプトは、いわゆる折り返しを行います。この場合、論理的な1行は、多数の行として表示される場合があります。コマンドプロンプトと異なり、SideAceウィンドウは、論理的な1行を1行で表示します。この場合、長すぎる行は、左側にある一部しか表示されません。ACEは、MS932のファイルでしたが、UTF-8のファイルとしてACEを保存するには、SideAceウィンドウのFileメニューからLeaveを選択してください。SideAceウィンドウは、閉じられます。SideAceウィンドウを大きくするには、Largeボタンを押してください。さもなければ、HelpメニューからLargeを選択してください。標準のサイズに戻すには、HelpメニューからStandardを選択してください。最大化されたウィンドウと異なり、大きいウィンドウは、タイトルバーをドラッグすることで画面を移動できます。詳細は、AceGrepユーザーズガイド(PDF)を参照してください。