1
私は、彼らはまた、bar
が含まれていない限りfoo
、を含むものを除くすべての行を表示したいと思います。 Logically!(foo and (!bar)) === (!foo) or bar
なので、2つの別々の式を使用できます。このような種類の一致を1つのgrep
またはegrep
とすることはできますか? -v
は両方の式を否定するので、おそらくPerlの正規表現を使用することはできません。ダブル/ハーフ反転のegrep
以下の作品が、それはegrep
で行うことができれば、コードを変換するためにはるかに少ない作業のようになります。
$ echo '
foo
bar
moofoo
foobar
barbar' | grep -Pv '^((?!bar).)*foo((?!bar).)*$'
bar
foobar
barbar
問題手元にはスピード(ギガバイトのデータのパターンを探している)です。これは行ごとに動作し、何のパイプが、これは高速である必要があります関与されていないので、awkをを使用して罰金の場合
私の脳はちょうどそれを見て痛い。良い質問。あなたはなぜPerl正規表現の使用を制限されているのですか?あなたのegrepは-Pをサポートしていませんか? –
@Dave G: 'egrep -P'は' pgrep'や 'grep -P'と同じですので、何も変更されません。 – l0b0