2016-10-18 11 views
1

Ich muss suchen und den Wert für CustomerEMailID in XML-Datei mit der Sed-Suche ersetzen und Sed s /// ersetzen. Ich konnte den Wert für CustomerEMailID abrufen, wie ersetze ich ihn mit E-Mail-ID mit sed?Suchen und Ersetzen Wert mit regulären Ausdrücke in Sed

//Print the value 
sed -n 's/.*CustomerEMailID="\([^"]*\).*/\1/p' xmltoconvert.xml 


//xml file: 
<Order 
    CustomerEMailID="XXXX" 
+0

Mögliches Duplikat von [regulärer Ausdruck, um ein xml-Attribut zu ersetzen] (http://stackoverflow.com/questions/780445/regular-expression-to-replace-an-xml-attribute) – tripleee

Antwort

1

Versuchen Sie folgendes:

sed 's/\(.*CustomerEMailID="\)[^"]*\(.*\)/\1emailID\2/' xmltoconvert.xml 

Es wird den von Ihnen gewünschten Wert ersetzen und die gesamte Datei auf Terminal drucken.

Eingabedatei:

<Order 
    CustomerEMailID="XXXX"> 

Ausgabedatei:

awk -v email="emailID" 'BEGIN{FS=OFS="\""}{for(i=1;i<=NF;i++) if($i ~ /CustomerEMailID=/) $(i+1)=email}1' file 

FS und OFS zu " Es stellt zunächst die Feldtrennzeichen:

<Order 
    CustomerEMailID="emailID"> 
+0

Danke Dave! Genau das, was ich machen wollte. – Rebeller

0

Mit awk Sie folgende verwenden könnte .

Dann sucht es nach dem Index des Parameters, der dem Muster /CustomerEMailID=/ entspricht, und ersetzt den nächsten Parameter durch den in der awk Variablen email gespeicherten String.

+0

Danke Oliv! Ich war auf der Suche nach einem sed-basierten finden und ersetzen, aber das hilft auch. – Rebeller

Verwandte Themen