grep: 정규식 문제 [닫기]

grep: 정규식 문제 [닫기]

왜 이것이 작동하지 않는지 설명할 수 있는 사람이 있습니까?

grep -ne '[A-Za-z]{1,30}\ [A-Z][a-z]{1,30}\W[A-Za-z]{1,30}\ [0-9]{1,30}\W[0-9]{5}\ [A-Za-z]{1,30}(\ [A-Za-z]{1,30})?' emails

답변1

먼저, 및 {}같은 확장 정규식(ERE) 구문을 사용합니다 . ERE를 사용하거나 이스케이프 하고 백슬래시를 사용하는 옵션을 추가 하고 다음과 같이 바꿉니다 .()?-E{}()?grep -ne '[A-Za-z]\{1,30\} [A-Z][a-z]\{1,30\}\W[A-Za-z]\{1,30\} [0-9]\{1,30\}\W[0-9]\{5\} [A-Za-z]\{1,30\}\( [A-Za-z]\{1,30\}\)\{0,1\}' emails

둘째, 백슬래시를 사용하여 작은따옴표 안의 공백을 이스케이프 처리합니다. 대부분의 구현에서는 grep이를 단순한 공간으로 처리하지만 POSIX 표준에서는 이를 정의되지 않은 것으로 간주합니다.백슬래시( '\' ) 다음에 오는 일반 문자의 해석은 정의되지 않습니다.

다른 질문이 있을 수 있지만 파일의 구문과 원하는 내용을 모르면 알 수 없습니다.grep

관련 정보