これら2つのgrep正規表現をどのように連結しますか?

これら2つのgrep正規表現をどのように連結しますか?

私はこの2つのgrep正規表現を持っています

grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt

そして

grep -e '[Ee][Ee].*[Yy].*[Yy]' first.txt

これらの2つを正規表現でどのようにリンクしますか?

答え1

..接続モードを介して?

grep -e '[Yy].*[Yy].[Ee][Ee][Ee][Ee].*[Yy].*[Yy]' first.txt

それとも、本質的に2つのパターンの論理ANDを実行するという意味ですか?

後者の場合、OR()とNOT(;)はgrep組み込まれていますが、ANDは組み込まれていないため、偽造する必要があります。 1つの方法は、出力を別の出力にパイプすることです。|-v[^]grep

grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt | grep '[Ee][Ee].*[Yy].*[Yy]' 

もう1つのアプローチは、論理OR(簡潔さのために省略)を使用して、任意の順序でリンクされた2つのパターンを見つけることです。

grep -Ee 'pattern1.*pattern2|pattern2.*pattern1' input.txt

私は最初のものがよりきれいでメンテナンスが簡単だと思います。

答え2

各パターン間で2つのパターンを同時にキャッチできます\|

grep -e '[Yy].*[Yy].[Ee][Ee]'\|'[Ee][Ee].*[Yy].*[Yy]'

関連情報