[SHELL] Gebruik variabelen met dubbele quotes sed -i

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de volgende lijn code:

code:
1
sed -i "/MatchText/ s/${tgrepLine}/${tNewLine}/" filename.output


filename.output bevat het volgende:

code:
1
2
3
blablabla
PATH=".:/home/root/bin/:/usr/local/bin/"
blablabla


Variable ${tgrepLine} bevat:
PATH=".:/home/root/bin/:/usr/local/bin/"
Variable ${tNewLine} bevat:
PATH="/home/user/bin/:.:/home/root/bin/:/usr/local/bin/"

Zoals je ziet bevatten het sed commando dubbele quotes en de variabele daarin ook.
Als ik het commando uitvoer: 'sed -i' krijg ik een fout.
Ik kan niet dubbele quotes binnen het 'sed' commando met dubbele quotes gebruiken...

Het commando ziet er zo uit: (let op de hoeveelheid quotes)

code:
1
sed -i "/MatchText/ s/PATH=".:/home/root/bin/:/usr/local/bin/"/PATH="/home/user/bin/:.:/home/root/bin/:/usr/local/bin/"/" filename.output


Het commando sluit zichzelf dus halverwege weer af. Dit wil ik voorkomen, maar wil hetgeen geschreven moet worden (dus PATH=" ) wel zo houden! Kan dat?

Thanks in advance!

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan binnenste " escapen met \, een andere optie is om de buitenste " door ' te vervangen ( let wel op dat gedrag dan anders is, variabelen worden niet meer geexpandeerd ).

Verder ook niet vergeten dat je ook die . in je regex zal moeten escapen want die heeft natuurlijk een speciale betekenis.