特殊な出力を持つファイルから正規表現パターンを繰り返し検索するのに役立ちます。

特殊な出力を持つファイルから正規表現パターンを繰り返し検索するのに役立ちます。

私の問題は、以下が必要だということです。

  1. regex_pattern指定されたルートディレクトリ内のすべてのファイルで一致するすべての行を検索する(詳細検索)
  2. 一致する行ごとに次のように出力します。
    • ファイル名
    • 一致する項目を含む行番号
    • 行の内容
    • 正規表現パターン
  3. 上記のデータをExcelにインポートします。したがって、CSVまたは区切られた出力形式を念頭に置いてください。

これを行う最も簡単な方法は何ですか?

これについて考えたことを示すために、正規化された単一のファイル名と正規表現パターンを入力として使用し、次のようなおおよそのPerlを使用して行を処理するPerlスクリプトを作成します(まだ試していませんが、最初の試みです):

while (<FILE>) {
  $line_number++;

  if ($_ =~ m/regex_pattern/) {
    # output: file_name\tline_number\tregex_pattern\t$_
    # ignore escaping issues for the time being
  }
}

再帰検索で各ディレクトリの内容をこのPerlスクリプトに渡す方法はまだわかりません。 Perlで検索することもできますが、Unix / Linuxでこれを行うには良い方法があると確信しています。

私はPerlと結婚しませんでした。標準のUnix / Linuxツールを一緒に接続する方法がある場合は良いでしょう。そうでない場合は、Perlの構文にある程度慣れているので、Perlを使用することをお勧めします。

ベストアンサー1

このような?

find /search/root -type f -exec awk 'BEGIN{pattern="regex_pattern"} $0 ~ pattern {printf "%s,%s,%s,%s\n",FILENAME,FNR,$0,pattern}'  {} +

おすすめ記事