2016-06-20 5 views
1

Ich habe zwei Variablen,ignoriert Variable mit und mehr Räumen usnig sed Befehl

first= new pool ser/@10.25.89.322 
[email protected] 

ich will ser/@10.25.89.322[email protected] mit neuem Pool ersetzen und will auch Raum, bevor neues Wort entfernen.

i wie versucht haben,

sed -i -e "s/${second}/"${first//\\/\\\\}"/g" 

und

sed -i -e "s/${second}/"${first//\\[ ]*/\\\\}"/g" 
sed -i -e "s/${second}/"${first//\\ */ *\\\\}"/g" 

Ich will nicht Raum löschen, wollen einfach nur zu ersetzen, wie es (außer Leerzeichen vor "neuen") ist.

+0

i treid haben wie, sed -i -e "s/$ {zweite} /" $ {erste // \\/\\\\\ "/ g" und sed -i -e "s/$ {second} /" $ {erste // \\ [] */\\\\\ ""/g " auch sed -i -e "s/$ {second} /" $ {erste // \\ */* \\\\ ""/g "aber hat nicht funktioniert. – Rockey

Antwort

0

Probieren Sie dazu:

sed -i "/${second}/ {s:${second}:${first//\\/\\\\}:g ; s/ new /new /}" 

Es ist die space in dem ersten Auftreten von new in der Linie nach dem Austausch zu entfernen.

Auch im Test unten, doppelte Anführungszeichen hinzugefügt wurden:

$ first=" new pool ser/@10.25.89.322" 
$ [email protected] 
$ sed -i "/${second}/ {s:${second}:${first//\\/\\\\}:g ; s/ new /new /}" mytestfile.txt 
+0

Vielen Dank Jay. es funktioniert ! – Rockey

+0

@Rishi super! Überlegen Sie, diese Antwort dann formell zu akzeptieren. –