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) 구문을 사용하고 있습니다 ?. -EERE를 사용하거나 이스케이프 {}및 백슬래시를 사용하는 옵션을 추가 하고 다음과 같이 ()바꿉니다 .?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

관련 정보