sed 명령이 "char 5: unterminating `s' command"를 출력하는 이유는 무엇입니까?

sed 명령이 "char 5: unterminating `s' command"를 출력하는 이유는 무엇입니까?

내 스크립트를 디버깅하기 위해 아래와 같은 명령을 실행했지만 작동하지 않았습니다.

$ L="Thanh,Fri 11 Nov, Mon 14 Nov,LX,VN" 
$ B="Fri 11 Nov, Mon 14 Nov"
$ N="11.11-14.11"
$ sed 's/'$B'/'$N'/' <<< $L
sed: -e expression #1, char 5: unterminated `s' command

저 좀 도와 주 시겠어요?

답변1

셸에서 $B사용하여 확인할 수 있듯이 확장 시 인용되지 않은 공백 때문입니다 .set -x

$ set -x
$ sed 's/'$B'/'$N'/' <<< $L
+ sed s/Fri 11 Nov, Mon 14 Nov/11.11-14.11/
sed: -e expression #1, char 5: unterminated `s' command
$ set +x

(sed가 어떻게 별도의 인수 등을 받는지 확인하세요 s/Fri 11 Nov,).

당신이 사용할 수있는

sed 's/'"$B"'/'"$N"'/' <<< "$L"

또는 더 간단하게

sed "s/$B/$N/" <<< "$L"

전.

$ set -x
$ sed "s/$B/$N/" <<< "$L"
+ sed 's/Fri 11 Nov, Mon 14 Nov/11.11-14.11/'
Thanh,11.11-14.11,LX,VN
$ set +x

관련 정보