GNU/Linux >> Linux Esercitazione >  >> Linux

Fuggire da Blackslash a Sed?

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

Linux
  1. Come sostituire una stringa in un file?

  2. Eliminare tutti i commenti C con Sed?

  3. Esempi di comandi sed in Linux

  4. sed:comando non trovato

  5. Sostituzione delle variabili d'ambiente in sed

Sostituzione di String in Bash

COME USARE SED EDITOR

I 20 migliori comandi sed da usare

Sed On Osx inserisce a una certa linea?

Espressione regolare con sed

Sostituzione SED su più righe