grep 매뉴얼에서
‘-e pattern’ ‘--regexp=pattern’
이것은 사용될 수 있습니다여러 검색 패턴 지정, 또는 "-"로 시작하는 패턴을 보호합니다. ("-e"는 POSIX에 의해 지정됩니다.)
"여러 검색 모드 지정"은 무엇을 의미합니까?
이는 출력에 지정된 모든 검색 패턴에 대한 모든 행이 포함된다는 의미입니까 -e
? 그렇다면 각각 패턴 중 하나와 일치하는 여러 grep을 파이핑하는 것과 동일한 작업을 수행합니까?
감사해요.
답변1
기존 의견과 답변을 명확히하려면 아니요, OP가 설명하는 것처럼 작동하지 않습니다.
실제로:
grep -e foo -e bar -e baz myfile
다음을 포함하는 행을 인쇄하십시오.누구나 foo
또는 bar
또는 baz
.
grep foo myfile | grep bar | grep baz
다음을 포함하는 행을 인쇄하십시오.foo
그리고 bar
그리고 baz
(꼭 이 순서일 필요는 없습니다).
답변2
아니요, 이는 이러한 패턴이 서로 AND로 연결되어 있다는 의미는 아닙니다.
즉, 여러 패턴을 지정할 수 있으며 두 번째 및 후속 패턴은 파일 이름으로 해석되지 않습니다.
다음을 고려하세요:
grep pattern1 file1
충분히 간단합니다. 이제 다음을 고려하십시오.
grep pattern1 file1 file2
그리고:
# This doesn't work
grep pattern1 pattern2 file1 file2
# But this does. There's no difference that's obvious to a computer.
grep pattern1 file1 file2 file3
문제가 보이시나요?
그러나 을 사용하면 -e
다음을 수행할 수 있습니다.
grep -e pattern1 -e pattern2 file1 file2
답변3
~에서POSIX grep 설명:
기본적으로 [...] 패턴이 종결자를 제외한 행의 일부와 일치하는 경우 입력 행을 선택해야 합니다
<newline>
.