これら2つのgrep正規表現を連結するにはどうすればいいですか

これら2つのgrep正規表現を連結するにはどうすればいいですか

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

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

そして

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

これら 2 つを 1 つの正規表現に連結するにはどうすればよいですか?

答え1

パターンを連結することによってですか?

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

それとも、本質的には 2 つのパターンの論理 AND を実行することを意味しましたか?

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

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

もう 1 つの方法は、論理 OR (簡潔にするために省略) を使用して、両方のパターンを任意の順序で連続して検索することです。

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

最初の方法の方が簡潔で、維持しやすいと思います。

答え2

各パターンの間にを使用すると、両方のパターンを一度に grep できます\|

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

関連情報