1. ホーム
  2. linux

[解決済み] ファイル内の複数行のパターンを検索するにはどうすればよいですか?

2022-05-11 12:08:11

質問内容

特定の文字列パターンを含むすべてのファイルを検索する必要がありました。最初に思いつく解決策は 見つける でパイプした xargs grep :

find . -iname '*.py' | xargs grep -e 'YOUR_PATTERN'

しかし、複数行にまたがるパターンを見つける必要がある場合、vanilla grepは複数行のパターンを見つけることができないので、困ってしまいます。

どうすればいいですか?

そこで、私は pcregrep の略です。 Perl 互換正規表現 GREP .

Mオプションを使用すると、行の境界をまたぐパターンを検索することができます。

例えば、ファイルを検索する際に、' 名前 ' 変数の後に、次の行で ' 説明文 ' 変数を使用します。

find . -iname '*.py' | xargs pcregrep -M '_name.*\n.*_description'

ヒント: パターンに改行文字を含める必要があります。プラットフォームによっては、' \n', '\r', '\rn', ...となる場合もあります。