Manchmal möchte man sich das häufige Anklicken von Links zum Download ersparen; Plugins wie GetThemAll machen das. Manchmal möchte man dann die gefundenen Links noch bearbeiten. Der erste Gedanke geht an grep, da das aber nur zeilenweise arbeitet, wird man enttäuscht. Ich hätte also gerne ein Programm, dass einen regulären Ausdruck auf alle URLs (bzw. href ="" Attribute, ggf. auch nur bestimmter Elemente) anwendet. # <programm> "[0-9]+\.pdf" my.html > of.txt # cat txt http://domain.tl/dir/06.pdf http://domain.tl/dir/7.pdf ../dir/2010.pdf Hat jemand sowas parat?
dummy schrieb: > Der erste Gedanke geht an grep, da das aber nur zeilenweise arbeitet, > wird man enttäuscht. Vielleicht hab ich jetzt Tomaten auf den Augen, aber woher nimmst du denn mehrzeilige URLs?
Gute Frage. Vielleicht habe ich das verwechselt und meinte eigentlich, dass grep die ganze Zeile ausspuckt, ich aber nur den/die Treffer haben möchte? Ist schon etwas her, dass ich das konkrete Problem hatte.
Da grep reguläre Ausdrücke verarbeitet, wirst Du wohl etwas am verwendeten regulären Ausdruck schrauben müssen, dann wird das schon.
nein, mit grep wirds wohl nichts werden weil das immer die ganze Zeile ausgibt. Mit sed gehts. Mit python/perl/... natürlich auch, wahrscheinlich einfacher. http://docs.python.org/library/re.html#re.findall
sebastians schrieb: > nein, mit grep wirds wohl nichts werden weil das immer die ganze Zeile > ausgibt. grep mit der Option --only-matching gibt nur den Teil aus, der matcht. Besonders hilfreich ist das aber leider nicht, weil der immer den vollständigen Match ausgibt statt nur einen der geklammerten Teile der regexp. sed ist hier schon OK, würde ich sagen. Zum Beispiel so: sed 's/^.*prefix\(gewünschter teil\)rest.*$/\1/;t;d' Das ";t;d" am Ende ist wichtig. Sonst gibt sed auch die Zeilen aus, bei denen die regexp überhaupt nicht gematcht hat.
Nur der Vollständigkeit halber: Die Sprache von sed ist turing-vollständig. Insofern ist prinzipiell jeder Algorithmus in sed mehr oder weniger umständlich programmierbar.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.