Quelltext-URLs greppen mit Anführungsstrichen drin?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Quelltext-URLs greppen mit Anführungsstrichen drin?

Beitrag von desputin » 20.06.2022 10:00:42

Hallo Ihr,

ich möchte aus einer html-Datei alle URLs greppen, die nach diesem Schema aufgebaut sind aussehen.

Code: Alles auswählen

https://www.abc.de/info/videos/41/wohin-woher-woher
https://www.abc.de/info/videos/22/wieso-weshalb-weswegen
Der Code um die URLs herum:

Code: Alles auswählen

<a href="https://www.abc.de/info/videos/41/wohin-woher-woher" title="
<a href="https://www.abc.de/info/videos/22/wieso-weshalb-weswegen" title="
Mein Befehl, der noch nicht geht, sieht so aus:

Code: Alles auswählen

grep -Eo "["https://www.abc.de/info/videos/][a-zA-Z0-9./?=_%:-]"" video-Uebersichtsseiten.txt | sort -u > URLs_video.txt && cat URLs_video.txt
Wißt Ihr, was da am Ende des Grep-Befehls fehlt? Also ich denke, Grep kann Anführungsstriche nicht richtig erkennen, oder?

Viele Grüße desputin
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Quelltext-URLs greppen mit Anführungsstrichen drin?

Beitrag von tobo » 20.06.2022 11:24:29

Wenn man " in einer mit " gequoteten Zeichenkette haben will, dann muss man entweder einen \ voranstellen oder außenrum ' setzen. Zudem sind in [] eingeschlossene Zeichen eine Zeichenklasse - da zählt jedes aufgeführte Zeichen.

Code: Alles auswählen

$ echo '<a href="https://www.abc.de/info/videos/41/wohin-woher-woher" title="
<a href="https://www.abc.de/info/videos/22/wieso-weshalb-weswegen" title="' | grep -Eo 'https[^"]+'
https://www.abc.de/info/videos/41/wohin-woher-woher
https://www.abc.de/info/videos/22/wieso-weshalb-weswegen
$

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Quelltext-URLs greppen mit Anführungsstrichen drin?

Beitrag von desputin » 20.06.2022 21:23:07

Hallo tobo, super, danke. Hat geholfen°!
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Quelltext-URLs greppen mit Anführungsstrichen drin?

Beitrag von tobo » 20.06.2022 22:14:58

Noch einen auf die RegEx-Grundlagen abzielenden Tipp:
viewtopic.php?t=183941
Das Material gibt's natürlich auch tonnenweise im Internet zu finden, allerdings werden dir hier auch Fragen dazu beantwortet...

Edit: Besser als die oben angegebene Einfachlösung ist die positve Rückschau (positive lookbehind), unter Einbeziehung von Perl-RegEx-Syntax, auf die Daten:

Code: Alles auswählen

grep -Po '(?<=href=")https[^"]+'
Das "kreist" die URL weiter ein.

Antworten