grep에서 여러 단어의 "또는"에 대한 정규식


12
[Computer]$ grep "foo|bar" filename

위 명령이 "foo"또는 "bar"를 종료하는 filename의 각 행을 반환해야한다는 것을 이해합니다. 매뉴얼 페이지에서 확인 | 정규식 또는 기호 및 코드는 "foo"및 "bar"에 대해 독립적으로 작동합니다. 내가 무엇을 놓치고 있습니까?

답변:


21

grep은 기본적으로 기본 정규 표현식 (BRE)을 사용합니다. 매뉴얼 페이지에서 :

기본 정규 표현식과 확장 정규 표현식 : 기본 정규 표현식에서 메타 문자?, +, {, |, (및)는 특별한 의미를 잃습니다. 대신 백 슬래시 버전 \ ?, +, {, \ |, (및)를 사용하십시오.

그래서 당신은 탈출해야합니다 |:

grep "foo\|bar" filename 

또는 확장 정규식을 켜십시오.

grep -E "foo|bar" filename

맨 페이지에서 그것을보고 오해했습니다. 나는 그것이 의미하는 줄 알았는데 \ | 개별 표현식이 아닌 완전한 표현 "foo | bar"를 찾게합니다. 빠른 답변 감사합니다!
Ocasta Eshu 2012

4
대신 egrep(의 별칭)을 사용할 수도 있습니다 . grep -Egrep
연설자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.