ubuntuusers.de

alias, sed und single quotes

Status: Gelöst | Ubuntu-Version: Ubuntu 13.10 (Saucy Salamander)
Antworten |

in_aeternum

Anmeldungsdatum:
13. Juli 2009

Beiträge: 35

Wohnort: /home

Hallo,
ich wollte mein alias zum Leerzeichen escapen umbauen, so dass auch weitere Zeichen escapet werden. Für []()*^| und Leerzeichen funktioniert das auch, aber sobald ich single quotes mit einbaue geht nichts mehr.
Das liegt vermutlich an folgendem:

Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. bash reference manual

Hat jemand eine Idee, wie ich das lösen könnte?

Hier das nicht funktionierende alias:

1
alias esc='sed -r "s/[]()*^| '\[]/\\\&/g"'

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Das bequemste dürfte sein, einfach 2x doppelte "Gänsefüßchen" zu verwenden, und die inneren dabei (natürlich) zu escapen:

alias esc="sed -r \"s/[]()*^| '\[]/\\\&/g\""

(habe ich jetzt aber nicht getestet !)

LG,

track

in_aeternum

(Themenstarter)

Anmeldungsdatum:
13. Juli 2009

Beiträge: 35

Wohnort: /home

Dein Tipp hat zwar nicht finktioniert, aber ich hab jetzt eine Lösung gefunden:

alias esc='sed -r "s/[]()*^| '"'"'\[]/\\\&/g"'

Folgendes hat geholfen: Escaping single-quotes within single-quoted strings

Trotzdem danke.

edit: so geht's noch einfacher

alias esc='sed -r "s/[]()*^| '\''[]/\\\&/g"'
Antworten |