嗨,我是这样的 xml 文件。
<parameter name="END_DATE">20181031</parameter>
我想将此标签值替换为我尝试过的其他值。
dt=$(awk -F '[<>]' '/_DATE/{print $3}' test.xml)
我提取了标签值。
我还有另一个像这样的变量值。
newdt=20181108
现在我需要将此值替换为提取的值。
如有任何帮助,我们将不胜感激。
虽然 Chepner 是对的,
awk
或 sed
并不是 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
如果 sed 适合你 -
sed -Ei 's/( name="END_DATE")>20181031</\1>20181108</' test.xml
不过 xml 解析器可能是一个更好的主意。
如果需要嵌入变量-
sed -Ei "s/( name=\"END_DATE\")>20181031</\1>$newdt</" test.xml
sed -Ei“s/(name=”END_DATE”)>20181031$newdt