sed:-e表达式#1,char 23:未终止的`s'命令

时间:2014-09-17 05:40:22

标签: regex bash sed

我想用{/ 1>替换filter = [ "a/.*/" ]

filter = [ "a\/sda1\/", "a\/sdb\/", "r/\.\*\/"]

我试过这个正则表达式

sed -i -r 's/\s+filter\s=.*/'filter = [ "a\/sda1\/","a\/sdb\/", "r/\.\*\/"]'/' conf 但得到这个错误。请指教。

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

1 个答案:

答案 0 :(得分:1)

问题是您在字段中使用的是/分隔符,而不是/使用其他分隔符,例如s#pattern#replace#。 另一件事是你必须将每个特殊含义字符替换为文字值。 所以下面的命令有助于获得期望的结果。

sed  -r -i -e 's#(filter = )(\[ "a/\.\*/" \])#\1[ "a\/sda1\/", "a\/sdb\/", "r/\.\*\/"]#g' conf