Сбой sed с ошибкой "unknown option to 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\"
1 ответ
Проблема с косыми чертами: ваша переменная содержит их, и последняя команда будет выглядеть примерно так: sed "s/string/path/to/something/g"
, содержащий слишком много косых черт.
поскольку sed
Вы можете использовать любой символ в качестве разделителя, вы можете попробовать использовать другой, который не указан в строке замены:
replacement="/my/path"
sed -e "s@pattern@$replacement@"
Обратите внимание, что это не является пуленепробиваемым: если строка замены содержит @
это сломается по той же самой причине, и любые последовательности обратной косой черты как \1
будет по-прежнему интерпретироваться в соответствии с правилами sed.