Moin,
Zitat von
rabby
...Deshalb wüsste ich gerne, wie sich das Problem lösen lässt bzw. ob es sowas wie magic_quotes/slashes für Shell Scripte gibt, damit mir die sed Zeile nicht ständig "zerbricht".
Ein "Quotierungs"-Programm auf Shell-Ebene ist mir nicht bekannt, aber das Problem ist IMHO recht einfach zu lösen. So viele Zeichen gibt es nicht, die im Ersetzungstext Ärger machen können. Das Slash-Problem kannst Du abfangen, indem Du als Trennzeichen für den s-Operator ein anderes Zeichen nimmst, dass im Ersetzungstext nicht vorkommen kann. Ansonsten fällt mir eigentlich nur der Backslash ein, der Ärger machen könnte, den musst Du bei der Parametereingabe entwerten:
Code:
jan@jack:~/tmp> e='bla/bla()+[]-*? {}\\"`'
jan@jack:~/tmp> echo "alle meine entchen" | sed 's| meine | {'"$e"'} \\|'
alle {bla/bla()+[]-*? {}\"`} \entchen
Eine andere Möglichkeit ist awk, hier wird allerdings das Entwerten des Backslash wieder zur Orgie ;-)
Code:
jan@jack:~/tmp> e='bla/bla()+[]-*? {}\\\\\"`'
jan@jack:~/tmp> echo "alle meine entchen" | awk '{print gensub(" meine "," {'"$e"'} \\\\","g"); }'
alle {bla/bla()+[]-*? {}\"`} \entchen
Jan
EDIT: Was bezweckst Du mit der -e-Option im sed?
Nochmal ich: Ich habe gerade gesehen, dass Aqualung bereits die Variante für die Begrenzer im sed vorgeschlagen hatte. Der Trick, um den Rest der shell-relevanten Sonderzeichen durchzukriegen, sind die "" um die Variable herum.
Lesezeichen