Почему sed выдает «char 53: неопределенная команда s»


28

Почему этот скрипт

ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF

вывод ->

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

Ответы:


38

Команда sв sed, использует определенный синтаксис:

s/AAAA/BBBB/options

где s- это команда подстановки, AAAAэто регулярное выражение, которое вы хотите заменить, BBBBс тем, на которое вы хотите заменить его, и optionsлюбая из опций команды подстановки, например global ( g) или ignore case ( i).

В вашем конкретном случае вы пропустили последний слеш /, если вы добавите его, все sedбудет работать нормально:

➜  ~  sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME

info sed 'The "s" Command' включает в себя полное описание и использование команды s.


9

Отсутствует /в конце.

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

1
это было упущено, /не для g, gэто для глобального, который не может быть желательным.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.