替换shell脚本中的XML标签值

时间:2018-11-08 13:28:55

标签: bash shell awk sed grep

嗨,我是一个像这样的xml文件。

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

我想将此标签值替换为我尝试过的其他值。

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

我提取了标签值。

我还有另一个这样的变量值。

newdt=20181108

现在我需要将此值替换为提取的值。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您的系统中没有awk,那么Chepner认为sedxmlstarlet不是xml的确切工具是正确的,然后尝试执行以下操作。

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

答案 1 :(得分:0)

如果sed对您有用-

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

不过,xml解析器可能是一个更好的主意。

如果您需要嵌入变量-

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