3

この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: "\"

ここで何が起こっているのですか?どうすればこれを機能させることができますか?

4

2 に答える 2