GNU/Linux >> Znalost Linux >  >> Linux

Uniknout Blackslash v Sed?

Snažím se napsat příkaz sed, který nahradí řádek v souboru. Nahrazení sed vyžadovalo aktuální pracovní adresář, díky čemuž je příkaz trochu chaotický kvůli znakům, které je třeba ukončit.

Tady je to, co zatím mám:

sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf

To mi však dává chybu se sed.

Pokusil jsem se to rozdělit na jednodušší příkazy:

[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project

Toto vrátí to, co chci, ale když se pokusím přidat substituci příkazů, selže:

[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'

Jakákoli pomoc by byla oceněna

Přijatá odpověď:

Pokud to čtu správně, pokoušíte se nahradit lomítka (/ ) s uvozeným lomítkem (\/ )? To dostane hodně snadnější manipulace, pokud nepoužíváte / jako váš oddělovač v sed :

~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username

Linux
  1. Jak použít Sed k výměně víceřádkového řetězce?

  2. Doplnění s „sed“?

  3. Může Sed nahradit nové řádkové znaky?

  1. Lomítko a zpětné lomítko v Sed?

  2. Příklady příkazů sed v Linuxu

  3. sed:příkaz nenalezen

  1. sed spojí čáry dohromady

  2. Existuje 'git sed' nebo ekvivalent?

  3. Multi-Line Sed Vyměnit