plutowitsch

URL und Username aus HTML-Datei extrahieren - sed, grep

gelöstFrageLinux
Hallo liebe Administratoren,

ich bräuchte mal Eure Hilfe...

Aktuell bin ich dabei ein recht umfangreiches Script zu schreiben, jedoch scheitere ich an einem bestimmten Punkt... Ich habe eine HTML-Datei mit mehreren Zeilen, in jeder Zeile befindet sich ein Benutzername und eine URL, die zusammengehören:

<p>username1<a href="https://example.link/1"</a>  
<p>username2<a href="https://example.link/2"</a>  
<p>username3<a href="https://example.link/3"</a>  
<p>username4<a href="https://example.link/4"</a>  

Ich würde diese Datei gerne mit Hilfe von sed oder grep folgendermaßen aussehen lassen:

USERNAME1 - URL1
USERNAME2 - URL2
USERNAME3 - URL3
USERNAME4 - URL4

Habt ihr Vorschläge, wie ich das realisieren kann?

Mit freundlichen Grüßen
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 317594

Url: https://administrator.de/forum/url-und-username-aus-html-datei-extrahieren-sed-grep-317594.html

Ausgedruckt am: 02.05.2025 um 21:05 Uhr

131026
131026 12.10.2016 aktualisiert um 16:09:02 Uhr
Goto Top
Hallo,
dazu brauchen wir mehr Kontext aus der HTML-Datei oder wie die Usernamen aufgebaut sind, denn <p> Abschnitte wird es sicherlich mehrere geben vermutlich auch in anderem Kontext, oder hat der Link ein bestimmtes teilweise gleich bleibendes Muster?

Ohne mehr von der HTML-Datei zu kennen und wenn der erste Teil der URL gleich bleibt, z.B. so
sed -nre 's/.*<p>(.*?)<a href="(https:\/\/example\.link\/.*)"<.*/\1 - \2/p' datei.html  
Gruß R.
plutowitsch
plutowitsch 12.10.2016 um 16:15:41 Uhr
Goto Top
Ich habe die HTML-Datei schon so weit beschnitten, dass nur noch die Zeilen mit entsprechenden Usernamen angegeben werden und diese sehen alle, wie in meinem Beispiel aus:

<p>username1<a href="https://example.link/1"</a>   
<p>username2<a href="https://example.link/2"</a>   
<p>username3<a href="https://example.link/3"</a>   
<p>username4<a href="https://example.link/4"</a>  

Die Usernamen bestehen aus dem ersten Buchstaben des Vornames gefolgt von einem Punkt und dem Nachnamen: v.nachname
131026
Lösung 131026 12.10.2016 um 16:17:15 Uhr
Goto Top
Na dann reicht:
 sed -nre 's/<p>(.*?)<a href="(.*)".*/\1 - \2/p' datei.html  
plutowitsch
plutowitsch 12.10.2016 um 16:25:03 Uhr
Goto Top
Vielen Dank!

Du hast mir sehr geholfen!