替换shell脚本中的XML标记值

moiiocjp  于 2023-10-23  发布在  Shell
关注(0)|答案(2)|浏览(117)

你好,我是一个这样的XML文件。

<parameter name="END_DATE">20181031</parameter>

我想把这个tags的值替换为其他值,我试过这样做。

dt=$(awk -F '[<>]' '/_DATE/{print $3}' test.xml)

我提取了标签值。
我有另一个这样的变量值。

newdt=20181108

现在我需要将这个值替换为提取的值。
如果你能帮忙的话,我将不胜感激。

rdlzhqv9

rdlzhqv91#

虽然Chepner是正确的,awksed不是xml的确切工具,但如果您的系统中没有xmlstarlet,请尝试以下操作。

echo $newdt
20181108
awk -v dat="$newdt" 'match($0,/>[0-9]+</){$0=substr($0,1,RSTART) dat substr($0,RSTART+RLENGTH-1)} 1' Input_file
pu3pd22g

pu3pd22g2#

如果sed对你有用-

sed -Ei 's/( name="END_DATE")>20181031</\1>20181108</' test.xml

不过,xml解析器可能是一个更好的主意。
如果需要嵌入变量-

sed -Ei "s/( name=\"END_DATE\")>20181031</\1>$newdt</" test.xml

相关问题