我对这个 sed oneliner 有问题
sed -i -n "1h; 1!H; ${g; :a s/\(Name=\"$key\".*<\!\[CDATA\[\"\)$val\(\"\]\]>\)/\1$deval\2/;ta p}"
显然我需要扩展变量key
,val
并deval
在 sed 中。所以我需要"
around sed 命令。
有了这个命令,我得到
bash: !H: event not found
逃避!
纠正它
sed -i -n "1h; 1\!H; ${g; :a s/\(Name=\"$key\".*<\!\[CDATA\[\"\)$val(\"\]\]>\)/\1$deval\2/;ta p}"
有了这个我得到
bash: sed -i -n "1h; 1\!H; ${g; :a s/\(Name=\"$key\".*<\!\[CDATA\[\"\)$val\(\"\]\]>\)/\1$deval\2/;ta p}" :bad substitution
所以我想这{
是一个问题。试图像这样修复它
sed -i -n "1h; 1\!H; $\{g; :a s/\(Name=\"$key\".*<\!\[CDATA\[\"\)$val(\"\]\]>\)/\1$deval\2/;ta p}"
产量
sed: -e expression 1, char 6: unknown command: "\"
这里发生了什么?我怎样才能使这项工作?