In realtà conosco la risposta a questa domanda, tuttavia più di una volta ho visto alcuni dei miei colleghi bloccati su questo problema, quindi ho pensato che sarebbe valsa la pena di documentarlo COSÌ. Se la domanda esiste già, la eliminerò volentieri.Come passare una variabile contenente barre a sed
Quindi qui si va ...
Come si fa a passare una variabile contenente barre come un modello per sed
.
Per esempio, se ho la seguente variabile:
var="/Users/Documents/name/file"
voglio passarlo a sed
come così:
sed "s/$var/replace/g" $file
Tuttavia ottengo errori. Come posso eludere il problema?
Non funziona. Provo sed -i "s ~ blah ~ $ var ~ g file" e ottengo: "sed -e espressione # 1, char 70: comando 's' non terminato. Ho confermato che il colpevole è un taglio di $ var. Varianti di questa soluzione a questo sono dappertutto e nessuno di loro funziona. È stato recentemente aggiornato? Sono su v4.2.2 su Ubuntu 14.04.4 LTS. –
Dipende dal valore di '$ var' – anubhava
Non funziona con ~ come osservato da @PaulEricson, ma funziona ancora con | –