他の2つの文字列の間に現れる文字列を含むファイル名のリスト

他の2つの文字列の間に現れる文字列を含むファイル名のリスト

特定のパターン(他の2つの文字列の間に表示される文字列)に一致するファイルのリストを印刷する必要があります。どうすればいいですか?テキストを抽出したくなく、このパターンに一致するファイルだけをリストしたいと思います。

PREFETCHadvanced_override.begin2つの文字列の間に表示される文字列のインスタンスを含むすべてのファイル名を一致させ、一覧表示するコマンドが必要ですadvanced_override.end。これらのファイルはすべて同じディレクトリに存在するため、このコマンドは現在のディレクトリ「.」の内容を検索し、指定されたパターンと一致するファイル名を一覧表示する必要があります。

修正する:

次の内容が必要ですadvanced_override.begin <lots of text> PREFTECH <lots of other text> advanced_override.end。これら2つの文字列間の特定の文字列を一致させるには、この文字列が必要で、おそらく前後の他の多くのテキストも一致する必要がありますPREFETCH

アップデート2:

入力ファイルはXMLファイルです。advanced_override.beginで始まるセクションは、advanced_override.end多くのテキスト行を含めて大きくすることができます。

ベストアンサー1

pcregrep可能であれば、-lスイッチを使用して一致するファイル名のみを一覧表示できます。

pcregrep -lM '(?s)advanced_override\.begin.*PREFETCH.*advanced_override\.end' ./*

PREFETCH複数行モードで中間の2つの文字列を検索します。現在のディレクトリにテキストファイルのみがあると仮定し(そうでない場合はループまたはをfor使用できます)、各ファイルには次から始めて終わるfindセクションが含まれているとします。複数のセクションでは、否定的な予測を使用することをお勧めします。たとえば、次のようになります。advanced_override.beginadvanced_override.endPREFETCH

pcregrep -lM '(?s)advanced_override\.begin(?:(?!advanced_override\.end).)*PREFETCH.*advanced_override\.end' ./*

おすすめ記事