
私はこれら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]'