Wie ich in meinem Kommentar sagte, ist es im Allgemeinen keine gute Idee, HTML mit regulären Ausdrücken zu analysieren, aber Sie können manchmal damit durchkommen, wenn sich das HTML, das Sie analysieren, gut verhält.
Um nur URLs zu erhalten, die in den href
Attributen von <a>
Elementen enthalten sind, ist es für mich am einfachsten, sie in mehreren Schritten auszuführen. Aus Ihren Kommentaren geht hervor, dass Sie nur die Top-Level-Domain und nicht die vollständige URL wünschen. In diesem Fall können Sie Folgendes verwenden:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
Wo source.html
ist die Datei, die den zu analysierenden HTML-Code enthält?
Dieser Code gibt alle URLs der obersten Ebene aus, die als href
Attribut aller <a>
Elemente in jeder Zeile auftreten. Die -i
Option für den ersten grep
Befehl besteht darin, sicherzustellen, dass er sowohl für Elemente <a>
als auch für <A>
Elemente funktioniert . Ich vermute, Sie könnten auch -i
die 2. eingeben, grep
um HREF
Attribute in Großbuchstaben zu erfassen , OTOH. :)
Zum Verarbeiten des Inhalts von http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
Ausgabe
http://www.google.com.au
http://maps.google.com.au
https://play.google.com
http://www.youtube.com
http://news.google.com.au
https://mail.google.com
https://drive.google.com
http://www.google.com.au
http://www.google.com.au
https://accounts.google.com
http://www.google.com.au
https://www.google.com
https://plus.google.com
http://www.google.com.au
Meine Ausgabe unterscheidet sich ein wenig von den anderen Beispielen, da ich auf die australische Google-Seite weitergeleitet werde.