sed为什么输出“ char 53:未终止的's'命令”


28

为什么这个bash脚本

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

Answers:


38

中的s命令sed使用特定的语法:

s/AAAA/BBBB/options

where s是替换命令,AAAA是您要替换的正则表达式,BBBB与您要替换的正则表达式相同,并且options是替换命令的任何选项,例如global(g)或忽略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
它丢失了/不是gg可能是不希望的,用于全局。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.