1. ホーム
  2. regex

[解決済み】grepを使用して複数行にまたがるパターンを見つけるには?

2022-04-02 07:39:24

質問

私は、"abc" と "efg" をこの順番で持ち、その2つの文字列がそのファイル内の異なる行にあるファイルを見つけたいのですが、どうすればいいですか?例:コンテンツを持つファイル。

blah blah..
blah blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah blah..
blah blah..

一致させる必要があります。

どのように解決するのですか?

Grepはこの操作に不向きなツールです。

pcregrep は、最近のLinuxシステムのほとんどで見かけることができます。

pcregrep -M  'abc.*(\n|.)*efg' test.txt

ここで -M , --multiline パターンが複数の行にマッチするようにする

より新しい pcre2grep もあります。どちらも PCREプロジェクト .

pcre2grep は Mac OS X 用に以下のサイトから入手できます。 Mac用ポート ポートの一部として pcre2 :

% sudo port install pcre2 

を経由して ホームブリュー としています。

% brew install pcre

または pcre2 の場合

% brew install pcre2

pcre2grep は もあります。 Linux (Ubuntu 18.04+) の場合

$ sudo apt install pcre2-utils # PCRE2
$ sudo apt install pcregrep    # Older PCRE