PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit sed und regexp



d0cd
22-08-2002, 21:04
Hi,
ich habe ein kleines Problem mit sed und regular expressions.

export USER=username

sed 's/\$dummy = [']['];/\$dummy = [']http:\/\/"$USER"\.domain\.org\/~"$USER"\/subdir\/['];/' config.inc.php

Dieser Ausdruck soll in der Datei "config.inc.php" nach dem Ausdruck "$dummy = '';" suchen und ihn durch den Ausdruck "$dummy = 'http://username.domain.org/~username/subdir/';" ersetzen.
Allerdings bemängelt sed immer wieder ein fehlendes '.

fork
22-08-2002, 23:01
sed -e 's/$debug = ";"/$debug = '\\'http:\\/\\/$USER.domain.org\\/~$USER\\/subdir\\/\\'\;'/' config.inc.php

Die Slashes müssen doppelt quotiert werden 1x für die Shell und 1x für sed. Das ist immer so 'ne Sache mit dem Shell-Quotings(sogar das Board hier schmeisst das ganze durcheinander). Ein Hochkomma kann anscheinend nur seiner Sonderfunktion beraubt werden wenn es ausserhalb eines Quotings mit einfachem Backslash gequotet wird(Es geht wohl auch irgendwie anders).

d0cd
23-08-2002, 12:25
Original geschrieben von fork

sed -e 's/$debug = ";"/$debug = '\\'http:\\/\\/$USER.domain.org\\/~$USER\\/subdir\\/\\'\;'/' config.inc.php

Die Slashes müssen doppelt quotiert werden 1x für die Shell und 1x für sed. Das ist immer so 'ne Sache mit dem Shell-Quotings(sogar das Board hier schmeisst das ganze durcheinander). Ein Hochkomma kann anscheinend nur seiner Sonderfunktion beraubt werden wenn es ausserhalb eines Quotings mit einfachem Backslash gequotet wird(Es geht wohl auch irgendwie anders).
Danke für die schnelle Antwort aber leider mach diese RegExp nicht ganz genau was ich brauche.
Sie sucht nach dem String $dummy_var = ;
Sie sollte aber nach $dummy_var = ''; (zwei hochkommas vor dem semi-colon) suchen. Mein Problem ist, dass ich nicht weiss wie ich diese Escapen muss. Folgende Ausrücke haben leider auch nicht zu dem gewünschten Erfolg geführt.


sed -e 's/$dummy_var = '\''\'";"/$dummy_var = '\'http:\\/\\/$USER.domain.org\\/~$USER\\/subdir\\/\'\;'/' config.inc.php
sed -e 's/$dummy_var = ['][']";"/$dummy_var = '\'http:\\/\\/$USER.domain.org\\/~$USER\\/subdir\\/\'\;'/' config.inc.php

fork
23-08-2002, 15:18
Das hilft Dir vielleicht weiter:

http://freshmeat.net/projects/visualregexp/?topic_id=45%2C47
http://freshmeat.net/projects/txt2regex/?topic_id=259
http://www.linuxfocus.org/Deutsch/July1998/article53.html

d0cd
23-08-2002, 15:31
Sehr interessante Links aber mein Problem bezieht sich auf die hochkommas. Ich weiss nicht wie ich die Escapen kann.