awk(mawk): 정규식 컴파일 실패(피연산자 누락)

awk(mawk): 정규식 컴파일 실패(피연산자 누락)

전화번호를 확인하기 위해 awk와 함께 다음 정규식을 사용하고 싶습니다.

echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'

하지만 다음과 같은 오류가 발생합니다.

awk: line 1: regular expression compile failed (missing operand)

답변1

여기에 사용된 범위는 고정 길이이므로 전체 범위 [0-9]{3}=> 를 간단하게 작성할 수 있습니다 [0-9][0-9][0-9]. 대신 (| |-|.), ( |-|.)?- 혼란스럽기는 하지만 .공백과 ( ) 이외의 문자를 허용합니까 -? 글쎄요 아마도 .?공간 때문일 것이고 어쨌든 -일치하지 않습니다 .. 리터럴 마침표와 일치하는 경우 ( 문자 범위로 해석되지 않도록)를 .사용해야 합니다 . 그래서:[- .]?-

^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$

이 되다:

^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$

관련 정보