Xml 仅在包含其他字符串的特定行中替换字符串

Xml 仅在包含其他字符串的特定行中替换字符串,xml,awk,replace,sed,gsub,Xml,Awk,Replace,Sed,Gsub,我有一个很大的xml文件,我只想将weight=“7.0”替换为weight=“11.0”,但只在包含clockRateScaler的行中,如下所示 <operator id="clockRateScaler." spec="ScaleOperator" parameter="@clockRate.c" scaleFactor="0.5" weight="7.0"/> 但它不起作用 在awk或sed下如何执行此操作?使用sed sed 'clockRateScaler/s/

我有一个很大的xml文件,我只想将
weight=“7.0”
替换为
weight=“11.0”
,但只在包含
clockRateScaler
的行中,如下所示

   <operator id="clockRateScaler." spec="ScaleOperator" parameter="@clockRate.c" scaleFactor="0.5" weight="7.0"/>
但它不起作用

在awk或sed下如何执行此操作?

使用
sed

sed 'clockRateScaler/s/ weight="7.0"/ weight="7.0"' file.xml 
sed '/clockRateScaler/s/weight="7.0"/weight="11.0"/g' file.xml
使用
awk

awk '/clockRateScaler/{gsub("weight=\"7.0\"", "weight=\"11.0\"")}1' file.xml
或者使用
xmlstarlet
(更好)

你得到

<operator id="clockRateScaler." spec="ScaleOperator" parameter="@clockRate.c" scaleFactor="0.5" weight="11.0"/>

您试图用相同的字符串替换
weight=“7.0”
,但遗漏了一些
/

您应该尝试以下命令:

sed '/clockRateScaler/s/weight="7.0"/weight="11.0"/' file.xml
sed '/clockRateScaler/s/weight="7.0"/weight="11.0"/' file.xml