Linux 명령 sed의 정규 표현식에서 종료되지 않은 's' 명령 오류가 발생합니다.

Linux 명령 sed의 정규 표현식에서 종료되지 않은 's' 명령 오류가 발생합니다.

Bash 스크립트를 사용하여 다음 sed 표현식을 실행할 때

t=$(sed -n "s/^([0-9]+\.){2,2}(\*|[0-9]+)(\-.*){0,1}$/p" ./apps/core-website/settings/website.config)

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

sed: -e expression #1, char 41: unterminated `s' command

답변1

s//오류 메시지는 정확합니다. 명령을 종료하지 않았습니다 . 패턴 뒤에는 선택적으로 , 등 s/pattern/replacement/의 한정자가 와야 합니다 g. 이미 가지고 있으므로 대체할 수 없습니다.ips/pattern/p

또한 ERE(확장 정규식) 모드를 사용하고 있다는 점도 알아야 하지만 sed이 작업을 수행한다는 메시지가 표시되지 않으므로 일반 정규식으로 가정합니다. 이를 위해 사용됩니다 sed -E.

관련 정보