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