Textdatei aufteilen

U

UweHei

Gast
Hallo,

ich benötige eure Hilfe bei folgendem Problem: Ich habe eine Text-Datei, die mehrere Datensätze enthält. Die Datensätze sind in HTML formatiert. Die Textdatei sieht in etwa wie folgt aus (einzeln bekomme ich die Datensätze nicht aus meinem Programm heraus):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
hier folgen einige Zeilen HTML
<title>Vorname Name</title><!-- Person-ID: ma0000001 -->
hier folgen weitere Zeilen HTML
</div></body></html>
hier folgt eine Leerzeile
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
hier folgen einige Zeilen HTML
<title>Vorname Name</title><!-- Person-ID: ma0000002 -->
hier folgen weitere Zeilen HTML
</div></body></html>
hier folgt eine Leerzeile
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
hier folgen einige Zeilen HTML
<title>Vorname Name</title><!-- Person-ID: ma0000003 -->
hier folgen weitere Zeilen HTML
</div></body></html>
hier folgt eine Leerzeile


Ich möchte diese Text-Datei nun in einzelne Dateien aufspalten, so dass die einzelnen Dateien mit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
beginnen und mit
</div></body></html>
enden.
D.h. das Programm/Script müsste die Leerzeile oder </div></body></html> erkennen, alternative könnte auch eine besondere Zeichenfolge eingefügt werden.
Außerdem müssen die Umlaute, ß usw. beibehalten bleiben.
Das „Sahnehäubchen“ wäre, wenn die erzeugten Dateien entsprechende der ID benannt werden (z.B. „ma0000003.html“). Hierzu müsste das Programm/Script die Zeichenfolge „ID:“ erkennen (nicht „Person-ID:“, da „Person“ ggf. durch etwas anders ersetzt wird). Das muss aber nicht unbedingt sein, da ich die Dateien auch mit einem anderem Programm umbenennen kann.
So, wie mache ich das? Ich kenne mich mit Scripten (C++, VBA und was es sonst noch so gibt) leider nicht wirklich aus, das sollte bei einer Erklärung berücksichtigt werden ;-). Ich hatte auch schon nach Programmen gesucht, aber außer TextWedge habe ich nichts gefunden. Und das ist leider unbrauchbar, weil es zum einen die Umlaute falsch darstellt und sich außerdem aufhängt (es tut also nicht).

Schönen Gruß

Uwe
 
https://askubuntu.com/questions/1206800/split-a-text-file-to-whats-before-and-after-a-given-pattern
vorher:
https://docs.microsoft.com/en-us/windows/wsl/install-win10

Das Umbenennen würde im Nachgang machen. Schleife über alle Dateien und "grep" auf das Muster ma[0-9]\{7\}
Ergänzung ()

madmax2010 schrieb:
Welches betriebssystem nutzt du?
Egal, schreib ein Shell Script für unix* und wirf ein Link zur Installation von WSL für die armen Windowsnutzer dazu :)
 
Du kannst dafür unabhängig vom OS reguläre Ausdrücken nutzen.
 
VBA wäre mein Vorschlag. Mit etwas Programmieraufwand sollte die Aufgabe recht einfach lösbar sein.
 
Danke für die schnellen Antworten. @ Piktogramm: ich werde das mal versuchen.
Ja, ich benutze Windows (Win 10), womit habe ich mich verraten? ;-)
Ergänzung ()

Ich habe https://docs.microsoft.com/en-us/windows/wsl/install-win10 jetzt mal (grob) durchgelesen. Das sieht mir (kein PC-Anfänger, aber völlig unerfahren, was Subsysteme und Linux betrifft) doch etwas komplex aus. Bevor ich mich daran versuche (und bei meinem Talent etwas zerschieße): gibt es eine weniger komplexe Lösung? Was ist mit dem VBA? Das gehört zumindest zur Microsoft-Office-Programmfamilie.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben