2013-03-05 13 views
6

Sto tentando di utilizzare sed per sostituire una linea con spazi con una variabile definita.Utilizzo di sed per sostituire il testo con spazi con una variabile definita con barre

Per esempio,

voglio sostituire 'una stringa muto' con $ lan e lan = "~/afile.py

ho assunto la linea sarebbe

sed "s/a dumb string/$lan/g" file.txt 

ma lascia la parte 'una stringa stupida' vuota nel file.txt

Il mio problema sembra abbastanza semplice.Qualsiasi aiuto è molto apprezzato

+2

Sei sicuro di aver impostato la variabile 'Ian'? Cosa succede quando si esegue "echo" <<$Ian>> "'? – ruakh

+2

Ora è una stringa di scarico o una stringa stupida ?! –

+0

ah ah, è una stringa stupida. Scusate, correggerò l'errore – NPB

risposta

10

ho deciso che a causa mia variabile @lan ha barre in esso, ho bisogno di usare il comando sed utilizzando:

Per esempio

sed "s:a dumb string:$lan:g" file.txt 

Questo è probabilmente un errore novizio, ma io non sono che familiare con sed. Grazie per l'aiuto.

7

sed non è a conoscenza del fatto che stai passando una variabile, verrà interpretata come solo un'altra parte della tua espressione regolare. Se la sostituzione contiene barre, la cosa più semplice da fare è utilizzare un separatore di carattere alternativo, in questo modo:

sed "s|a dumb string|$lan|g" file.txt 
0

Qualche spazio nella stringa di ricerca non funziona così necessario per usare [[: space:]] in centos.

sed -i 's/User[[:space:]]daemon/User apache/' httpd1.conf 
Problemi correlati