你好,我是一个这样的XML文件。
<parameter name="END_DATE">20181031</parameter>
我想把这个tags的值替换为其他值,我试过这样做。
dt=$(awk -F '[<>]' '/_DATE/{print $3}' test.xml)
我提取了标签值。我有另一个这样的变量值。
newdt=20181108
现在我需要将这个值替换为提取的值。如果你能帮忙的话,我将不胜感激。
rdlzhqv91#
虽然Chepner是正确的,awk或sed不是xml的确切工具,但如果您的系统中没有xmlstarlet,请尝试以下操作。
awk
sed
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
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
2条答案
按热度按时间rdlzhqv91#
虽然Chepner是正确的,
awk
或sed
不是xml的确切工具,但如果您的系统中没有xmlstarlet
,请尝试以下操作。pu3pd22g2#
如果sed对你有用-
不过,xml解析器可能是一个更好的主意。
如果需要嵌入变量-