grep - 複数行パターンの作成

grep - 複数行パターンの作成

スクリプト内に複数行でgrepパターンを作成する方法は?bashそう:

grep -o -P '
    (?!<.*?(?<!(href))=")
        https?:\/\/(?!(www\.example\.com)).*?
    (?=(">))
' input.txt

プログラムを書くときにこれを行うことphpができます。これでb​​ashスクリプトでこれを試しましたが、うまくいきません。一行に書くのがとても不便です。

おそらくパターン内の書式を許可するオプションがあります。つまり、grepこのオプションを有効にすると、スペース(スペースと改行)は認識されません。

グレブバージョン:

grep -V
grep (GNU grep) 2.25

ベストアンサー1

-Pそれにもかかわらず、(?x:)改行文字を無視することはできません。スペースとタブの場合、次のように動作します。

echo abab | grep -P $'(?x:a b a\tb)'

しかし、改行文字は異なる動作をします。

echo ab | grep -P $'(?x:a\nb)'
grep: the -P option only supports a single pattern

少なくともGNU grep 2.16では。

おすすめ記事