Why this bash script

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

output ->

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

The s command in sed, uses a specific syntax:


where s is the substitution command, AAAA is the regex you want to replace, BBBB is with what you want it to be replaced with and options is any of the substitution command's options, such as global (g) or ignore case (i).

In your specific case, you were missing the final slash /, if you add it, sed will work just fine:

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

info sed 'The "s" Command' includes the full description and usage of the s command.


Missing / at the end.

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
  • 1
    it was missing the / not the g, g is for global which may not be desired. – user78605 Nov 19 '14 at 15:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.