grep에서 여러 단어의 “또는”에 대한 정규식 매뉴얼 페이지에서 확인 | 정규식 또는 기호

[Computer]$ grep "foo|bar" filename

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



답변

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

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

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

grep "foo\|bar" filename 

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

grep -E "foo|bar" filename


답변