複数のANDパターンでzgrepを実行する方法は?

複数のANDパターンでzgrepを実行する方法は?

grep私はこれを使ってこれを行う方法を知っています。ジグレフ

grep -E 'Pattern1.*Patter2' fileName

私はそれを使用していますジグレフ.json.gzファイル内のパターンを一致させます。ファイルが大きすぎるのでzgreppattern1を
したいと思います。BOTHそしてパターン2、順序は重要ではありません。

可能ですか?

答え1

grep論理AND演算子はありません。正規表現OR演算子を使用しても同じ結果が得られます。

zgrep -E 'pattern1.*pattern2|pattern2.*pattern1' filename

答え2

パターン1とパターン2の両方が存在しますが、順序に関係なく行を探しているようです(しかし実際には明確ではありません)。

簡単な解決策はですzcat FileName | grep -E pattern1 | grep -E pattern2。しかし、これは解凍されたファイル全体が最初のファイルにパイプされることを意味します。

この問題を処理し、zgrepファイル内の発生回数が制限されている場合は正常に動作します。 (最もまれな場合は交換する必要があります。)pattern1zgrep -E pattern1 | grep -E pattern2pattern2

ソリューションと一緒に@mashuptwiceによって提供された答えはうまくいきますが、関連する難易度によって異なり、始めるのが難しいかもしれませんpattern1pattern2

問題を解決できませんでした。 2つの文字列を任意の順序で(しかしメモリに限定されていない)検索したいと思いperl -ale 'print if (/pattern1/ && /pattern2/)'(ほとんどの言語では同様のことを許可しますが、私はPerlが好きです)良い解決策になりました。 (あなたの場合は、スクリプトで解凍を処理する必要があります)

関連情報