我想用{/ 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
答案 0 :(得分:1)
问题是您在字段中使用的是/
分隔符,而不是/
使用其他分隔符,例如s#pattern#replace#
。
另一件事是你必须将每个特殊含义字符替换为文字值。
所以下面的命令有助于获得期望的结果。
sed -r -i -e 's#(filter = )(\[ "a/\.\*/" \])#\1[ "a\/sda1\/", "a\/sdb\/", "r/\.\*\/"]#g' conf