문자열 "tt"가 포함된 줄을 선택하기만 하면 되는 텍스트 파일이 있습니다. 그래서 명령줄에서 다음을 시도했습니다.
grep "t{2}" textfile
텍스트 파일에 "rotten" "litter" 등과 같은 단어가 포함되어 있다는 것을 알고 있지만 grep 명령은 어떤 줄도 표시하지 않고 상태 1로 종료됩니다.
나는 또 다른 일반적인 패턴을 시도했습니다.
grep "a.*x" textfile
이를 위해 작동합니다.
답변1
기본적으로,grep사용기본 정규식, grep이 여러 문자와 일치하도록 하려면 중괄호를 이스케이프해야 합니다.
grep 't\{2\}' textfile
또는 이 옵션을 사용할 수 있습니다 -E
(또는GNU grep의 -P 옵션, 이는Perl 호환 정규식) grep
사용확장 정규식, 이스케이프 없이 중괄호를 사용할 수 있습니다.
grep -E 't{2}'
답변2
중괄호를 이스케이프 처리해야 합니다.
grep 't\{2\}' textfile
그렇지 않으면 {
리터럴 }
문자로 처리됩니다.
답변3
-E
( --extended-regexp
) 또는 -P
( ) 옵션을 사용해야 합니다 --perl-regexp
(GNU grep 사용).
GNU grep(1) 매뉴얼 페이지에 따르면기본 정규식과 확장 정규식즉, 다음 옵션을 사용하지 않기로 선택한 경우:
기본 정규 표현식에서 메타 문자 ?, +, {, |, (및)는 백슬래시 버전 \?, \+, \{, \|, \( 및 \ ) 대신 특별한 의미를 잃습니다.