last updated:2021/08/02

Hidemaru Q and A

第II部〜知っていると便利な秀丸の機能
 grep/タグジャンプ


grep/タグジャンプ

現在編集しているファイルの内容や、あるフォルダに置かれている複数のファイルから、特定の文字列を含んだ行を全て調べる事ができます(grep("ぐれっぷ"と読む(^^;)機能)。
また、調べた結果の出力ファイルを使って、文字列の見つかった行(ファイル)へ直接移動ができます(タグジャンプ機能)。

[手順]

例えば、c:\diary フォルダにある、txt という拡張子を持つファイルから、「Love」という文字列を含む全ての行を調べたいとします。

  1. メニューバーから「検索→grepの実行」を選択して下さい。

    grepダイアログ

  2. 一番上にある「検索する文字列」の部分に探したい文字列(今の例だと「Love」)を記入して下さい。

    通常は1行のみですが、複数行を入力可能にできます。「検索する文字列」入力欄横にあるマークを押すと表示されるメニューから、「複数行」を選択します。

    複数行入力

  3. その下にある「検索するファイル」の部分に、検索対象となるファイル名を記入します(今の例だと「*.txt」)。
    ※現在編集中の内容に対して実行したい時は、入力ボックスの右端にある矢印 > をクリックして"(現在の内容)"を選択して下さい。
     現在の内容

    ※ファイル名にはMS-DOSのコマンドライン入力でお馴染み(?)の「ワイルドカード」が使用できます。
     ワイルドカードとは、"*"(アスタリクス) と "?" (クエスチョンマーク) の事で、

    • "*"は、0文字以上の文字列
    • "?"は、0文字、または1文字

     を表します。

    複数のファイル名を入力したい時は、ファイル名を";"(半角のセミコロン)で区切って下さい。

    例) *.txt;file\_?.man;a.doc

    上記の例では、

    *.txt
    任意文字列が前にある".txt"というファイル = 拡張子が ".txt" のファイル
    file\_?.man
    fileフォルダにある、"_" の後に0または1文字がある、拡張子が ".man" というファイル
    a.doc
    a.doc というファイル

    の3つから検索することになります。

    「検索するファイル」に関しては、[補足]検索するファイル も参照。除外したいファイルの設定が出来ます。

    Ver.8.73以降から、「検索するファイル」の部分に、直接「除外したい拡張子」を指定する事が出来ます。「除外したい拡張子」を指定すると、「動作環境」で除外設定した拡張子と直接指定した拡張子が、除外対象になります。 (「動作環境」の設定を上書きするわけではない)

    <!*.xxx>

    <!」に続き、除外したい内容を記述し、「>」で閉じます。複数指定する場合は「;」で区切って入力します。

    例1)*.*<!*.txt>
    例2)*.*<!*.txt;*.html>

    例1)は、"*.*"(全てのファイル)を対処とするが、"*.txt" は除外。
    例2)は、"*.*"(全てのファイル)を対処とするが、"*.txt""*.html" は除外。

    となります。

    除外するファイルの入力をアシストする機能もあります。補助メニューを参照してください。

  4. その下にある「検索するフォルダ」で、検索対象のファイルのあるフォルダを選択します(今の例だと「c:\diary」)。「...」ボタンを押すと、フォルダ参照ダイアログが開き、フォルダを選択可能です。

    Ver.8.85以降から、「検索するファイル」の部分に、「除外したいフォルダ」を指定する事が出来ます。

    <!フォルダ名\>

    <!」に続き、除外したいフォルダ名記述し、「>」で閉じます。フォルダ名の最後には必ず 「\」 を付けること。複数指定する場合は「;」で区切って入力します。

    例1)*.*<!folder1\>
    例2)*.*<!folder1\;folder2\>
    例3)*.*<!folder*\>

    例1)は、"*.*"(全てのファイル)を対処とするが、"folder1" は除外。
    例2)は、"*.*"(全てのファイル)を対処とするが、"folder1""folder2" は除外。
    例3)は、"*.*"(全てのファイル)を対処とするが、"folder*" にマッチするフォルダは除外。

    となります。

    除外するフォルダの入力をアシストする機能もあります。補助メニューを参照してください。

  5. 右側にあるチェックボックスの内、該当する物にチェックをします。

    • 大文字/小文字の区別」チェックボックス:
      検索文字列の大文字と小文字を区別して検索します。この項目がOFFの場合、上の例で「LOVE」や「love」も検索されます。

    • 単語の検索」チェックボックス:
      この項目がONになっていると、「Lover」や「ILoveNY」等の、ある単語の一部になっている場合は検索されません。ここで言う「単語」とは、半角英字とアンダースコア("_")のみで構成された文字(列)を指します。

    • 正規表現」チェックボックス:
      検索文字列に「正規表現」が使える様になります。
      正規表現」は「正規表現について」を参照して下さい。

    • あいまい検索」チェックボックス:
      「正規表現」をさらに便利にした「あいまい」な検索が可能になります(全半角同一視等…説明もあいまい(^^;)。
      あいまい検索」は「あいまい検索について」を参照して下さい。

    • 追加の条件」チェックボックス:
      追加の条件に従って検索する範囲を制限できます。
      検索「追加の条件」についてを参照してください。

    • 検索文字列を強調」チェックボックス
      検索後、検索に該当する文字列を強調表示します。

    • ヒットしない行」チェックボックス
      これをONにすると、ヒットしない行を出力します。「追加の条件」が指定されている場合は、この設定は無効になります。

    • サブフォルダも検索」チェックボックス:
      この項目がONの時、指定されたフォルダにサブフォルダがある場合そのサブフォルダの中のファイルも検索します。

    • 最小化状態で実行」チェックボックス:
      grepの実行時は実行結果を表示するための秀丸エディタウィンドウを自動で開きますが、この項目がONの時はgrepの実行が終了するまで、この結果表示ウィンドウをアイコン化します。

    • ファイル名一覧だけ作成」チェックボックス:

      1. の出力結果の違いをご覧下さい。
    • ファイル名をフルパスで出力」チェックボックス:
      この項目がONの時、検索文字列が見つかったファイルのファイル名をフルパスで出力します。 OFFの場合はファイル名だけを出力します。

    • エンコードの種類」コンボボックス:
      検索するファイルのエンコードを指定します。「自動判定」で不都合がある場合には、指定してみてください。ただし、検索対象が全部同じエンコードでないと、誤判定します。

    • 出力先」コンボボックス:
      grep結果の出力先を指定します。

      • 「自動」の場合は、新しいタブ、新しい秀丸エディタウィンドウを開きます。
      • 「単一」は、grep結果を再利用します。なければ「自動と同じ」。
      • 「タブグループごと」は、タブグループ内にgrep結果があれば再利用します。
      • 「アウトプット枠」は、アウトプット枠を開き、そこに出力します。
  6. 右上の「OK」ボタンを押すと検索が始まります。

  7. 実行が終わると結果を表示するウィンドウができています。その内容は「ファイル名一覧だけ作成」チェックボックスのON/OFFによって少し違います。

    • 「ファイル名一覧だけ作成」が「OFF」の時の動作
      この項目がOFFの時は、検索文字列が見つかった全てのファイル名と行を結果として書き出します。

      [実行結果の例("file?.txt"について"2"を検索)]

      file1.txt(2): ファイル1の2行目
      file1.txt(20): ファイル1の20行目
      file2.txt(1): ファイル2の1行目
      file2.txt(2): ファイル2の2行目
      (以下略)
    • 「ファイル名一覧だけ作成」が「ON」の時の動作
      この項目がONの時は検索文字列が存在したファイル名(と始めに見つかった行番号)だけを結果として書き出します。 [実行結果の例("file?.txt"について"2"を検索)]

      file1.txt(2)
      file2.txt(1)
      file3.txt(2)
      file4.txt(2)
      (以下略)
  8. 見つかったファイルに移動する(タグジャンプ機能)

    結果ウィンドウのファイル名の部分にカーソルがある状態で「その他→タグジャンプ」(デフォルトではF10キー)を選択すると、 (開かれていない時は開いてから)そのファイルの該当する行へ移動できます。

    また、「バックタグジャンプ」で元の結果ウィンドウに戻る事もできます。

    さらに、この結果ウィンドウをファイルとして保存もできて、上記の「タグジャンプ」も後から使用できます。 (ファイル名がフルパスでない場合は、ファイルを開いた箇所からの相対パスになるので、「検索するフォルダ」に結果を保存する必要があります)

[補足]

grepに関係する「動作環境」です。

動作環境-grepダイアログ

動作環境-grepの動作

タグジャンプ

設定により、結果ウィンドウのファイル名の部分をダブルクリックする事で、タグジャンプさせる事も可能です。「動作環境-検索-grepの動作」にある、「grep結果」の「grep結果上ではダブルクリック=タグジャンプとする」に、チェックを入れてください。

grepのダイアログ

grepダイアログの種類は2種類あります。

新タイプは、[手順]にあるダイアログで、普通タイプは、フォルダ選択画面と一体になっています。

動作環境-grepダイアログ普通タイプ

新タイプはフォルダ選択ダイアログが別になっている事もあり、種類も変更可能です。好みに応じて設定を変更してください。

検索するフォルダ

通常、grep実行時に開いているファイルの場所を「検索するフォルダ」に自動的にセットしますが、前回grep実行時のフォルダを最初からセットできます。

動作環境 - 検索 - grepダイアログ - grepのダイアログボックス」にある、「前回のフォルダを使う」にチェックを入れてください。

Ver.8.71より、「grepダイアログ」の「検索するフォルダ」の横にピン留めアイコンが追加され、「前回のフォルダを使う」の設定を「grepダイアログ」から変更可能です。

前回のフォルダを使うのピン

ピン留めアイコン」自体を表示するかしないかも、「動作環境 - 検索 - grepダイアログ - grepのダイアログボックス」にある「ピン止めボタン表示」のチェックボックスで設定可能です。

「検索するフォルダ」は、「検索するファイル」と違い、複数箇所の指定は出来ません。

検索するファイル

動作環境 - 検索 - grepダイアログ - grepの動作」で、検索するファイルの設定が可能です。

文字数制限の設定

動作環境-grepの動作-文字数制限の設定

処理の都合上、マッチした行が長いと全部を表示しない場合や、正規表現の対象となる一行の文字数の上限があります。その制限に関する設定をします。

通常使用しているファイルで、1行の文字数が多くなければ、"小さい"や"大きい"で問題ないでしょう。どんなファイルでも必ずマッチさせたい場合は、"制限なし"を選択します。 (自身の使用環境により、適切と思われる設定してください)

補助メニュー

「検索する文字列」入力部の横にあるマークを押すと表示されるメニューは、検索ダイアログ と同じです。

「検索するファイル」入力部の横にあるマークを押すと表示されるメニューです。

検索するファイルのメニュー

前半には、「動作環境 - ファイル - 「開く」のダイアログボックス」にある「ファイルの種類の編集」で、「「開く」のダイアログ」に設定した内容が表示されます。後半には「除外の設定」や、「除外する拡張子」「除外するサブフォルダ」の指定をアシストする機能もあります。


目次に戻る