嗨,我是一个像这样的xml文件。
<parameter name="END_DATE">20181031</parameter>
我想将此标签值替换为我尝试过的其他值。
dt=$(awk -F '[<>]' '/_DATE/{print $3}' test.xml)
我提取了标签值。
我还有另一个这样的变量值。
newdt=20181108
现在我需要将此值替换为提取的值。
任何帮助将不胜感激。
答案 0 :(得分:1)
如果您的系统中没有awk
,那么Chepner认为sed
或xmlstarlet
不是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