2016-05-18 18 views
1

Nach viel der Vergangenheit Tag versucht, kann ich nicht auf 1 Zeile folgenden Befehl Arbeit machen:oneliner von Sed-Befehl Make

sed '/'"$var1"'/ {n;n;a '\'"$var2"\'' \\ 
}' tempproject.cfg 

, wenn ich dies wie oben ausgeführt, sie paßt var1 $ und ersetzt die dritte Zeile danach mit $ var2.

Beispiel dafür, was der sed-Befehl tun soll:

var1=c 
    var2=hello 
a                a 
b                b   
c                c 
d  =>  sed '/'"$var1"'/ {n;n;a '\'"$var2"\'' \\ =>  d 
e    }' tempproject.cfg        e 
f                'hello' \ 
g                g 
h                h 

wenn ich auf 1 Zeile den Befehl i die folgenden Fehler setzen erhalten:

sed: -e expression #1, char 0: unmatched `{' 

Vielen Dank im Voraus!

+0

zuerst $ var1 = c => var1 = c dann $ var2 = hallo var2 = hallo – sjsam

+0

behoben. Irgendwelche Hinweise, um das zu lösen? –

Antwort

0
$var1=c 
$var2=hello 
$sed "/$var1/{n;n;n;s/.*/'$var2' \\\ /}" tempproject.cfg 

sollten Sie

a 
b 
c 
d 
e 
'hello' \ 
g 
h 
i 

Warum three backslash verwenden?

+0

vielen Dank! –

+0

@ FrederikVanBrussel: Sie sind willkommen .. – sjsam