2017-02-07 2 views
1

Ich habe eine große XML-Datei und ich möchte nur weight="7.0" zu weight="11.0" ersetzen, aber nur in den Zeilen, die clockRateScaler wie folgt enthalten.ersetzen Zeichenfolge nur in bestimmten Zeilen mit einer anderen Zeichenfolge

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

Ich habe versucht, mit sed

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

aber es hat nicht funktioniert.

Wie könnte ich dies unter awk oder sed tun?

Antwort

1

sed

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

mit awk

awk '/clockRateScaler/{gsub("weight=\"7.0\"", "weight=\"11.0\"")}1' file.xml 

oder mit xmlstarlet (besser)

xmlstarlet ed -u '/operator[@id="clockRateScaler."]/@weight' -v 11.0 file.xml 

Sie erhalten,

mit
1

Sie versuchen, weight="7.0" durch die gleiche Zeichenfolge zu ersetzen, und Sie haben einige / verpasst.

Sie den Befehl versuchen sollten:

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

Ich habe nicht bemerkt, dass erster/Dank –

Verwandte Themen