이 두 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]'

관련 정보