Sto provando a scrivere un comando sed per sostituire una riga in un file. Il sed replace richiedeva la directory di lavoro corrente, che inizia a rendere il comando un po' disordinato a causa dei caratteri che devono essere sottoposti a escape.
Ecco cosa ho finora:
sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf
Tuttavia questo mi dà un errore con sed.
Ho provato a suddividerlo in comandi più semplici:
[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project
Questo restituisce ciò che voglio, ma quando provo ad aggiungere la sostituzione del comando, fallisce:
[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
Qualsiasi aiuto sarebbe apprezzato
Risposta accettata:
Se ho letto bene, stai cercando di sostituire le barre (/
) con una barra in avanti con escape (\/
)? Questo ottiene un lotto più facile da gestire se non usi /
come delimitatore in sed
:
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username