왜 이것이 작동하지 않는지 설명할 수 있는 사람이 있습니까?
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