이 두 grep 정규식을 어떻게 연결합니까?

이 두 grep 정규식을 어떻게 연결합니까?

나는이 두 개의 grep 정규 표현식을 가지고 있습니다

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

그리고

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

이 두 가지를 단일 정규식으로 어떻게 연결합니까?

답변1

.. 패턴을 연결함으로써?

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

아니면 본질적으로 두 패턴의 논리적 AND를 수행한다는 의미입니까?

후자의 경우 OR( ) 및 NOT( ; ) grep이 내장되어 있지만 AND가 내장되어 있지 않으므로 위조해야 합니다 . 한 가지 방법은 하나의 출력을 다른 출력으로 파이프하는 것입니다.|-v[^]grep

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

다른 방법은 논리적 OR(간결함을 위해 축약됨)를 사용하여 두 패턴을 순서에 상관없이 연속적으로 찾는 것입니다.

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

나는 첫 번째가 더 간결하고 유지 관리가 더 쉽다고 생각합니다.

답변2

각 패턴 사이를 사용하여 한 번에 두 패턴을 모두 잡을 수 있습니다 \|.

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

관련 정보