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