Re: sed - frage
Hallo Andre,
On Tue, Feb 18, 2003 at 08:30:50PM +0100, Andre Fischer wrote:
> ich möchte in einer Zeile die enthaltene URL separieren. Meistens steht da
> aber immer noch was davor und dahinter. Das davor ist ja kein problem, das
> mach ich mit sed s/^.*http:/http:/g. aber wie lösche ich ab dem ersten "ich
> darf nicht in einer URL enthalten sein"-Zeichen bis zum Zeilenende?
Du könntest natürlich nach allen nach RFC 2396 (Anhang A) erlaubten Zeichen
suchen. So als Schnellschuß würde ich aber eher nach Leerzeichen und
Tabulatoren Ausschau halten:
s/^.*\(http:[^ \t]\+\).*/\1/
Du mußt auch noch schauen, ob in den Zeilen nicht vielleicht 2 URLs
enthalten sind. Der g-Schalter hinter dem s/// nützt Dir in deinem Beispiel
genau so wenig wie in meinem, selbst wenn du das ^ wegläßt. Grund: greedy
match des * Metachar. Probiere es am besten mal an der Zeile
blabla http://eins/ suelz http://zwei laber
aus.
In meinem Beispiel mußt Du noch \t durch ein echtes Tab-Zeichen (unter Bash:
Ctrl-V TAB) ersetzen.
Ansonsten gibt es da vielleicht ein schönes Perl-Modul zu, welches Dir die
Arbeit abnimmt. Oder Du schaust, ob du mit den Sourcen von urlview etwas
anfangen kannst.
Gruß,
Mike
Reply to: