Ich versuche, die mit dem src
Attribut verknüpften Links aus dem HTML einer Webseite herauszufiltern.
Früher habe ich curl
das HTML und den folgenden sed
Befehl zum Filtern der URL-Links erhalten.
curl -s http://www.example.com/ | sed -n '/src/,/jpg/p'
Meine Idee war, die Zeilen herauszufiltern, die src
mit der Erweiterung beginnen und enden .jpg
. Aber das hat nicht funktioniert und es wird das gesamte HTML ausgedruckt. Wie kann ich das machen?
Antwort1
Versuchen Sie den folgenden Befehl:
curl -s http://www.example.com | grep -Po '(?<=src=")[^"]*(jpg|png)'
Erläuterung:
Aus man grep
:
-o, --only-matching
Print only the matched (non-empty) parts of a matching line,
with each such part on a separate output line.
-P, --perl-regexp
Interpret PATTERN as a Perl compatible regular expression (PCRE)
Der Lookbehind (?<=src=)
stellt sicher, dass an der aktuellen Position im String die Zeichen vorangehen src=
. Dann suchen wir nach allem, außer "
dem, was mit jpg oder png endet.