Regex zu finden, externe links aus der html-Datei mit grep
Aus vergangenen Tagen, die ich versuche zu entwickeln, die eine regex, die Holen alle externen links von den web-Seiten gegeben, um es mit grep.
Hier ist mein Befehl "grep"
grep -h -o -e "\(\(mailto:\|\(\(ht\|f\)tp\(s\?\)\)\)\://\)\{1\}\(.*\?\)" "/mnt/websites_folder/folder_to_search" -r
nun die grep scheinen, alles zurück, nachdem das externe links in einem gegebenen Linie
Beispiel
wenn eine html-Datei enthalten, so etwas wie dieses auf der gleichen Linie
https://yahoo.com'>Yahoo
dann die angegebene grep-Befehl das folgende Ergebnis zurück
http://www.google.com">Google</a><p><a href='https://yahoo.com'>Yahoo</a></p>
die Idee hier ist, dass, wenn eine html-Datei enthalten mehr als ein links(irrespective in a,img etc
) in der gleichen Zeile dann die regex Holen sollten nur die links und nicht alle Inhalte der Zeile
Schaffte ich entwickelte das gleiche in rubular.com
die regex ist wie folgt
("|')(\b((ht|f)tps?:\/\/)(.*?)\b)("|')
mit der Arbeit mit den oben genannten input
aber iam nicht in der Lage zu replizieren die gleiche in grep
kann mir jemand helfen
Ich kann nicht ändern Sie die html-Datei, so Fragen Sie mich nicht, das zu tun, weder kann ich für jedes spezifische tags und überprüfen Sie deren Eigenschaften auf externe links, wie es addup Verarbeitung Zeit und meine Anwendung nicht verlangen, dass
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
cat /Pfad/zur/Datei | egrep -o "(E-Mail|ftp|http(s)?://){1}[^'\"]+"Ausgänge ein link pro Zeile. Es wird davon ausgegangen jeder link wird innerhalb von einfachen oder doppelten Anführungszeichen. Ausschließen bestimmter domain-links, verwenden Sie
-v
:Standardmäßig grep druckt die gesamte Linie wurde eine übereinstimmung gefunden. Die
-o
Schalter wählt nur die übereinstimmenden Teile der Linie. Finden Sie die Mann Seite.