English help on website



grep, grepdialog, grepdialog2文(Ver9.00対応版)
目次検索系文− grep, grepdialog, grepdialog2文
grep文は、パラメータを指定してgrepを実行します。パラメータは以下のように指定します。
grep 検索文字列, 検索するファイル, カレントフォルダ [,word] [,casesense | nocasesense] [,regular | noregular] [,fuzzy] [,subdir] [,icon] [,filelist] [,fullpath] [, hilight | nohilight]
カレントフォルダとして現在のフォルダを指定する場合は、"."か、または""を指定してください。

正規表現文字列やファイル名の中で「\」を""で囲った文字列の中で指定する場合は、秀丸エディタの文字列定数の仕様により、「\\」と指定しなくてはいけません。 例えば正規表現で「\n」(改行文字)を検索させたい場合は、マクロの中の文字列定数としては"\\n"と指定する必要があります。または@""を使った文字列の書き方にすると書きやすいです。

多くのオプションはsearchdialogなどと同じです。
grepにあるオプションは以下の通りです。

subdir
subdirはサブフォルダも検索をします。

icon
iconは最小化状態で実行します。

filelist
filelistはファイル名一覧だけ作成します。

fullpath
fullpathはファイル名をフルパスで出力します。(V4.00以降)

outputsingle, outputsametab
outputsingleを指定すると出力先を「単一」にできます。(V6.50以降)
outputsametabを指定すると出力先を「タブグループごと」にできます。(V7.00以降)
マクロでは「アウトプット枠」を指定することはできません。

unmatch
unmatchを指定すると「ヒットしない行」にできます。(V8.00以降)

エンコードの種類
openfileと同様に、エンコードの種類をオプションで指定することができます。(V5.11以降)

数値指定
searchoption 相当の数値を直接指定できます。(V6.50以降)
例:grep $str, $file, $dir, #searchoption;
数値を連続して指定すると、エンコードの種類と、searchoption2相当の値を直接指定できます。(V8.30以降)
例:grep $str, $file, $dir, #searchoption, #encode, #searchoption2;

結果
resultには見つかった個数が入ります。途中で中断された場合はresultは-1になります。
ダイアログが出る文で、ダイアログでキャンセルした場合はresultは-2になります。
検索したファイルの数をgetresultexで取得可能です。

その他
フォルダが存在しない場合は、これ以上マクロを続行できないエラーとして扱われます。この場合disableerrormsgも効きません。
事前にフォルダが存在するかどうかをチェックするには、if( existfile( "foldder\*.*" ) ){…} という感じで判定することができます。

grep "#include", "*.cpp;*.c", ".", regular;


grepdialog文は、「grepの実行...」のダイアログボックスを出します。
通常の「grepの実行...」コマンドを実行した動作とは違います。
現在の秀丸エディタが新規作成状態でない場合は新規に秀丸エディタが立ち上がります。
grepdialog



grepdialog2文は、grep文と同様のパラメータ指定をして、ダイアログボックスを出します。(V6.00以降)
通常の「grepの実行...」コマンドを実行したのと同様に、ダイアログは現在の秀丸に対して出し、出力先は新規作成状態ではその秀丸エディタに出力し、何かファイルを開いている場合は新規作成して出力します。
grepdialog2 検索文字列, 検索するファイル, カレントフォルダ [,word] [,casesense | nocasesense] [,regular | noregular] [,fuzzy] [,subdir] [,icon] [,filelist] [,fullpath] [, hilight | nohilight]



検索文字列には上限があります。上限を超える可能性がある場合は事前に文字数をカウントして判断する必要があります。
参照: 検索/置換文字列の上限について