Почему 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
me987654323
источник

Ответы:

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.

Braiam
источник
9

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

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
jherran
источник
1
это было упущено, /не для g, gэто для глобального, который не может быть желательным.