Suchen & Ersetzen in html-Dateien

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

Suchen & Ersetzen in html-Dateien

Beitrag von desputin » 02.12.2022 08:53:21

Hallo Ihr,
ich habe eine Internetseite, die in html vorliegt und in deren zahlreichen html-Dateien einige Links falsch im Quellcode vorhanden sind.
Das Problem ist, daß bei den Links ein .html am Ende fehlt und der Browser sie daher als Quelltext anzeigt:

Code: Alles auswählen

<a href="../51-proacontra-neoliberal/anpassung-und-widerstand/214-5-praktische-hebel-gegen-die-leistungs-und-verschleissgesellschaft">
						5 praktische Hebel gegen die Leistungs- und Verschleißgesellschaft					</a>
Wie kann ich in der Konsole mit Suchen&Ersetzen solche Links so umbauen, daß sie danach so aussehen? Also ein html hinten dran stehen haben?

Code: Alles auswählen

<a href="../51-proacontra-neoliberal/anpassung-und-widerstand/214-5-praktische-hebel-gegen-die-leistungs-und-verschleissgesellschaft.html">
						5 praktische Hebel gegen die Leistungs- und Verschleißgesellschaft					</a>
Eigentlich müßte ich dann zugleich auch alle Dateinamen in den Verzeichnissen wie

Code: Alles auswählen

214-5-praktische-hebel-gegen-die-leistungs-und-verschleissgesellschaft
auch umbenennen in:

Code: Alles auswählen

214-5-praktische-hebel-gegen-die-leistungs-und-verschleissgesellschaft.html
Wie würdet Ihr das Problem lösen?

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

uname
Beiträge: 12314
Registriert: 03.06.2008 09:33:02

Re: Suchen & Ersetzen in html-Dateien

Beitrag von uname » 02.12.2022 09:07:34

Wenn das viele oder alle Dateien betrifft, dann kann das auch ein SEO- oder technisch ein Rewrite-Problem sein. Bei CMS wie z.B. Wordpress werden Internetadressen umgeschrieben, damit sie schöner aussehen. Rewrites werden in .htaccess-Dateien vorgenommen. Vielleicht mal dort suchen.

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von desputin » 02.12.2022 09:17:54

Hallo uname,

ich habe mit diesem Befehl eine veraltete joomla-Seite "verhtmlisiert". Es gibt also keine Datenbank mehr und kein CMS:

Code: Alles auswählen

 httrack --quiet --path=. --max-rate=10000000 --connection-per-second=100 https://Beispiel-Internetseite.de/
So sieht dann ein Beispiel-Link aus, der nicht richtig funktioniert, weil ein .html im Quelltext fehlt:
https://www.neoliberalyse.de/index.php/ ... echte.html

Wenn Du manuell das html anhängst:
https://www.neoliberalyse.de/index.php/ ... chaft.html

Dann geht es, habe die Datei schon umbenannt....
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

uname
Beiträge: 12314
Registriert: 03.06.2008 09:33:02

Re: Suchen & Ersetzen in html-Dateien

Beitrag von uname » 02.12.2022 10:48:57

Du könntest z. B. sed verwenden.
Wenn der Name immer vor "> kommt, könntest du das durch .html"> ersetzen.
Probiere das vielleicht mal im ersten Schritt aus.
Veilleicht musst du die Suche noch weiter einschränken.

Code: Alles auswählen

sed 's/">/.html">/g' datei.txt
Ausgabe dann erst mal in eine andere Datei umleiten.

michaa7
Beiträge: 4857
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Suchen & Ersetzen in html-Dateien

Beitrag von michaa7 » 02.12.2022 11:13:41

In bluefish (quelltexteditor) gibt es auch ein recht mächtiges SU&ER-Werkzeug. Das arbeitet auf Wunsch auch projektweit.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von desputin » 02.12.2022 13:20:57

uname hat geschrieben: ↑ zum Beitrag ↑
02.12.2022 10:48:57
Du könntest z. B. sed verwenden.
Ok, danke. Aber an manchen stellen steht schon korrelt .html am Ende dieser Link-Zeilen. Dann könnte ich natürlich im 2. Schritt sonst alle .html.html ersetzen, das ginge vermutlich... Andererseits gibt es im html-Code ja viel mehr solche > Zeichen, wo aber kein .html rein darf, sonst zerschieß ich mir die ganze Seite mit sed.
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
hikaru
Moderator
Beiträge: 13822
Registriert: 09.04.2008 12:48:59

Re: Suchen & Ersetzen in html-Dateien

Beitrag von hikaru » 02.12.2022 13:36:00

Du könntest dein sed-Pattern präziser machen:

Code: Alles auswählen

's/\( href=".\+\)">/\1.html">/g'
Für das Umbenennen der Dateien schau dir mal Debianrename an!

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von tobo » 02.12.2022 14:28:26

desputin hat geschrieben: ↑ zum Beitrag ↑
02.12.2022 13:20:57
uname hat geschrieben: ↑ zum Beitrag ↑
02.12.2022 10:48:57
Du könntest z. B. sed verwenden.
Ok, danke. Aber an manchen stellen steht schon korrelt .html am Ende dieser Link-Zeilen. Dann könnte ich natürlich im 2. Schritt sonst alle .html.html ersetzen, das ginge vermutlich...
Klar ginge das. Stilistisch schöner edititert man nur die relevanten Zeilen:

Code: Alles auswählen

sed -E '/\.html">/!s/(href="[^"]+)">/\1.html">/'

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von desputin » 02.12.2022 16:33:24

Ok, super, danke Euch.
Etwas kniffeliger ist aber nun, wenn ich parallel zu den Links in den Dateien, die ich per sed verändere, auch bei den html-Dateien die entsprechenden Dateinamen ändern muss, also ein .html anhängen.... D.h. ich bräuchte eine Liste von Links, die sed ändert und dann ein automatisches umbenennen genau dieser Dateien...
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von tobo » 03.12.2022 11:53:11

Dann einfach 2 sed-Läufe. Der erste schreibt die zu ändernden Dateien (aus der Datei INPUT) in eine Datei (TO_RENAME), ändert aber nichts:

Code: Alles auswählen

sed -En '/\.html">/!s/.*href="([^"]+)">/\1/p' INPUT >TO_RENAME
Der zweite sed-Lauf macht die Änderungen (-i schreibt die Änderungen in die Datei!) und hängt innerhalb von INPUT die htmls an:

Code: Alles auswählen

sed -E '/\.html">/!s/(href="[^"]+)">/\1.html">/' INPUT -i
Und danach verschiebst du die Dateien (umbenennen):

Code: Alles auswählen

while IFS= read -r file;do mv "$file" "${file}.html";done <TO_RENAME

reox
Beiträge: 2511
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Suchen & Ersetzen in html-Dateien

Beitrag von reox » 04.12.2022 18:38:55

Ich wollte das hier mit scnr posten https://stackoverflow.com/a/1732454/446140 und auf Debianxmlstarlet verweisen, aber ich schaffs da weder an ein Attribut etwas anzuhängen (kann es nur komplett ersetzen) und auf den meisten HTML Dateien funktioniert es auch nicht so gut, weil die kein valides XML sind... Aber dennoch scheinen mir parser besser geeignet zu sein als regex ;)

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von tobo » 04.12.2022 19:11:53

reox hat geschrieben: ↑ zum Beitrag ↑
04.12.2022 18:38:55
Aber dennoch scheinen mir parser besser geeignet zu sein als regex ;)
Aha, scheint dir das - kannst du dann mal anhand der beiden einzigen html-Beispielzeilen zeigen, warum das wohl so ist?

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von desputin » 05.12.2022 00:24:16

Ok, dank Euch, ich probier das mal die nächsten Tage aus und schreib dann wie es geklappt hat.
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

reox
Beiträge: 2511
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Suchen & Ersetzen in html-Dateien

Beitrag von reox » 05.12.2022 08:39:29

tobo hat geschrieben: ↑ zum Beitrag ↑
04.12.2022 19:11:53
reox hat geschrieben: ↑ zum Beitrag ↑
04.12.2022 18:38:55
Aber dennoch scheinen mir parser besser geeignet zu sein als regex ;)
Aha, scheint dir das - kannst du dann mal anhand der beiden einzigen html-Beispielzeilen zeigen, warum das wohl so ist?
Mir schien, dass das nur ein MWE ist. Im allgemeinen Fall ist eine Regex nicht ausreichend. Die Regex kann nämlich nicht wissen ob sie da gerade tatsächlich ein Attribut eines a tags ließt oder sonst irgendetwas was auch mit href=" anfängt. Ein Parser erkennt das aber sehr wohl.

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

Re: Suchen & Ersetzen in html-Dateien

Beitrag von tobo » 05.12.2022 12:15:47

reox hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 08:39:29
Im allgemeinen Fall ist eine Regex nicht ausreichend.
Ja, das stimmt schon und ist auch allgemein bekannt. Mich hätte halt nur interessiert, wie du aus den beiden Beispielzeilen, die Beschaffenheit dieses speziellen HTML-Dokuments herleitest.

reox
Beiträge: 2511
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Suchen & Ersetzen in html-Dateien

Beitrag von reox » 06.12.2022 08:36:03

Es wurde ja joomla genannt und wer weiß was die CMS alles machen. Ich hab ähnliche Dinge auch schon fixen müssen (CMS nach static HTML) und hab es schlussendlich semi-automatisiert gemacht, weil da immer ein Spezialfall war, den die Regex nicht abgedeckt hat. Oft weiß man das vorher ja gar nicht was die CMS da alles wildes zusammenbasteln.

Antworten