나는이 두 개의 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]'