Wie filtert man mit grep oder sed Links aus HTML heraus?

Wie filtert man mit grep oder sed Links aus HTML heraus?

Ich versuche, die mit dem srcAttribut verknüpften Links aus dem HTML einer Webseite herauszufiltern.

Früher habe ich curldas HTML und den folgenden sedBefehl zum Filtern der URL-Links erhalten.

curl -s http://www.example.com/ | sed -n '/src/,/jpg/p'

Meine Idee war, die Zeilen herauszufiltern, die srcmit 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.

verwandte Informationen