2010-12-07 11 views
0

Ich versuche, Sed-Strings in Datei. Dies ist eine Datei, sed_tmp, mit einer Saite:Ersetzen von IP-Strings

, "127.0.0.2"); 

Dies ist der sed Befehl, den ich verwenden:

sed -r 's/[0-9{1,3}]\.[0-9{1,3}]\.[0-9{1,3]\.[0-9{1,3}]/XXX.XXX.XXX.XXX/g' ./sed_tmp 

und das Ergebnis ist

, "12XXX.XXX.XXX.XXX"); 

aber ich brauche das Ergebnis

, "XXX.XXX.XXX.XXX"); 

Was mache ich falsch?

Antwort

2

Schreiben Sie die {} außerhalb von []

sed -r 's/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/XXX.XXX.XXX.XXX/g' ./sed_tmp 
1

dies funktioniert:

sed "s/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/XXX.XXX.XXX.XXX/g" 

Ich habe noch nie die {1,3} Syntax gesehen, dass Sie es verwenden, haben Sie einen Link, um es irgendwo beschreiben?

Edit: Scheint sed wie verwendet es etwas anders für: http://www.grymoire.com/Unix/Sed.html#uh-35

+0

ja, es ist das Auftreten – RusAlex