このsed onelinerに問題があります
sed -i -n "1h; 1!H; ${g; :a s/\(Name=\"$key\".*<\!\[CDATA\[\"\)$val\(\"\]\]>\)/\1$deval\2/;ta p}"
明らかに、 variable と sed を展開する必要がkey
ありval
ますdeval
。したがって、"
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: "\"
ここで何が起こっているのですか?どうすればこれを機能させることができますか?