[sed] sed가“알 수없는`s ‘옵션”오류와 함께 실패

사용하려고합니다

sed -i -e "s/.*seb.*/    \"$ftp_login_template\"/" $ftp_dir

그러나이 오류가 발생합니다 :

sed: -e expression #1, char 34: unknown option to `s'

이것이 왜 완벽하게 작동하는지 이해하지 못합니다.

sed -i -e "s/.*wbspassword.*/    \"wbspassword\": \"$password\",/" $user_conf

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

이것이 문제가 될 수 있습니까?
ftp_login_template=\${user}:${password}:24:86::\/var\/lib\/clit.${user}\/downloads:\/bin\/false\"



답변

문제는 슬래시입니다. 변수에 변수가 포함되어 있으며 최종 명령은 sed "s/string/path/to/something/g"슬래시가 너무 많이 포함되어 있습니다.

sed문자를 구분 기호로 사용할 수 있으므로 (새 구분 기호를 선언하지 않아도 됨) 대체 문자열에 나타나지 않는 다른 문자를 사용해보십시오.

replacement="/my/path"
sed --expression "s@pattern@$replacement@"

이것은 대체 증거가 아닙니다. 나중에 대체 문자열에 포함 된 @경우 동일한 이유로 중단되고 같은 백 슬래시 시퀀스 \1는 여전히 sed규칙 에 따라 해석됩니다 . |가독성과 비슷하기 때문에 구분자로 사용 하는 것도 좋은 옵션 /입니다.


답변