Stapelverarbeitung Ersetzen /Textdateien

Hallo,
ich muss eine große Anzahl von Textdateien bearbeiten.

Hauptsächlich muss ich in diesen Textdateien bestimmte Teile löschen und/oder durch andere Teile ersetzten.

Beispiel:

Text 1 soll entfernt werden

oder

Text 1 soll durch text 2 ersetzt werden.

Da dieses teilweise nin mehr als 500 Dateien immer auf die selbe Art und Weise geschehen soll, such ich nun ein Utility, welches mir die Arbeit mit Hilfe einer Stapelverarbeitung ermöglicht.

Wer kann mir hierbei helfen?

Gruß
Joachim

Hallo,

ich muss eine große Anzahl von Textdateien bearbeiten.
Hauptsächlich muss ich in diesen Textdateien bestimmte Teile
löschen und/oder durch andere Teile ersetzten.

P.E.R.L. = practical extraction & report language

Das wurde für sowas entworfen.

Beispiel:
Text 1 soll entfernt werden

oder

Text 1 soll durch text 2 ersetzt werden.

Da dieses teilweise nin mehr als 500 Dateien immer auf die
selbe Art und Weise geschehen soll, such ich nun ein Utility,
welches mir die Arbeit mit Hilfe einer Stapelverarbeitung
ermöglicht.

Dieses kurze Programmstück würde das alles erledigen,
hier ersetzen wir „Hawaii“ mit „Rora Tonga“ in allen
Dateien *.txt im aktuellen verzeichnis:

 #### modtext.pl ####
 $alter\_text = qq/Hawaii/;
 $neuer\_text = qq/Rora Tonga/; # oder qq// wenn nur loeschen

 for $filename (glob('\*.txt')) {
 # alte Datei oeffnen, einlesen und schliessen
 open FILE, "; close FILE;

 # ersetze alten Text durch neuen Text - alle Treffer ersetzen
 $text =~ s/$alter\_text/$neuer\_text/g;
 print "schreibe $filename neu\n";

 # neue datei oeffnen und rausschreiben und schliessen
 open FILE, "\> $filename" or die "Couldn't open '$filename': $!";
 print FILE $text; close FILE;
 }
 ### modtext.pl ###

Aufruf wäre hier mit

 c:\texte\\> perl modtext.pl

Es gibt sicher auch Tools dafür, aber das angesprochene Problem
schreit danach, auf einfache Art gelöst zu werden.

Perl für Windows:
http://downloads.activestate.com/ActivePerl/Windows/…

Grüße

CMБ

Hallo nochmal,

wenn ein Begriff nicht in der Datei ist, braucht
sie auch nicht neu geschrieben zu werden:

$alter\_text = qq/schlimmes Wort/;
$neuer\_text = qq/nettes Wort/; # oder qq// wenn nur loeschen

**LOOP:** 
for $filename ( glob('\*.txt') ) {
 # alte Datei oeffnen, einlesen und schliessen
 open FILE, "; close FILE;

 # ersetze alten Text durch neuen Text - falls vorhanden
**next LOOP unless $text** =~ s/$alter\_text/$neuer\_text/g;

 # neue datei oeffnen und rausschreiben und schliessen
 print "schreibe $filename neu ($alter\_text =\> $neuer\_text)\n";
 open FILE, "\> $filename" or die "Couldn't open '$filename': $!";
 print FILE $text; close FILE;
}

Hallo Semjon,
vielen lieben Dank für deine Idee.

Ich bin aber überhaupt nicht in der Welt der Programmierung unterwegs und das Utility von dir sind wie man so schön sagt „böhmische Dörfer“


Heisst es, dass ich das Programm Pearl installieren muss?

Dann ---- deinen Code irgendwie - wo schreiben - und dann ausführen muss—.

Wie du siehst — für mich doch etwas unsicher.

Es geht mir darum ganze Textpassagen zu ändern.

Bestehenden Textblock gegen einen anderen Inhalt tauschen, usw. usw.

Vielleicht gibt es ein andere (sichere) und somit auch einfachere Lösung.

Gruß
Joachim

Hallo Joachim,

Ich bin aber überhaupt nicht in der Welt der Programmierung
unterwegs und das Utility von dir sind wie man so schön sagt
„böhmische Dörfer“

Bisher nicht :wink: Aber stell Dir vor, Du würdest …

Heisst es, dass ich das Programm Pearl installieren muss?
Dann ---- deinen Code irgendwie - wo schreiben - und dann
ausführen muss—.

  1. Perl runterladen und installieren
  2. Programmtext in Datei abspeichern „modtext.pl“ oder ähnlich

dann gehst Du nur in das Verzeichnis mit
den Texten und startest es mit

 c:\texte\> perl c:\modtext.pl

Das ist eigentlich alles.

Naja, vorher musst Du noch im Programm angeben, welchen
Text Du gegen welchen austauschen musst. Längere
Passagen sind eigentlich auch kein Problem.

Hast Du ein konkretes Beispiel parat, an dem man
den Kern Deiner Ersetzungsarbeit erkennen kann?
Muss der Text „unscharf“ (mit unterschiedlichen
Leerzeichen/Zeilenwechseln/Tab etc) erkannt werden?

Vielleicht gibt es ein andere (sichere) und somit auch
einfachere Lösung.

Hmmm, in meinen Augen ist das „einfacher“ :wink:)

Grüße

CMБ

Hallo Semjon,

also ich habe dir Dateien mit dem von mir gewünschtenm als Mail geschickt.

Vielleicht kannst du dort einmal hinschauen.

Danke
Jo.

Hallo Joachim,

also ich habe dir Dateien mit dem von mir gewünschtenm als
Mail geschickt.
Vielleicht kannst du dort einmal hinschauen.

Aha, ich verstehe. Die Lösung
wäre, jede Datei „zeilenweise“
zu betrachten, da die fraglichen
Blöcke anhand ihrer Merkmale in den
jeweiligen Zeilen erkannt und
zugeordnet werden können.

Es kann immer eine Anzahl kompletter
Zeilen herausgenommen oder eingefügt
werden.

Die einelnen Links (…/irgendwas)
zu ändern ist ein nachgeordnetes
Problem und sehr einfach hinzukriegen,
in Perl z.B.:

 s|../irgendwas/|irgendwas/|;

Ich muss nur erstmal weg, vielleicht
schau ich heute abend nochmal drauf.

Grüße

CMБ

Hallo,

Guckst du da:
http://www.flazh.de/reptile/reptile.htm

Viel Spass und Erfolg
Stefan

Na da bin ich aber PLATT…

Vielen lieben Dank.

Genau, dass was ich gesucht habe.

Arbeit optimal damit erledigt !!!

Viele Grüße aus Düsseldorf
Joachim

Hi Semjon,

schau mal -> Stefan hat mir diesen Tipp gegeben.

http://www.flazh.de/reptile/reptile.htm

Das war das was ich so sehr suchte.

Vielen lieben Dank für deine Tipps.

Nun habe ich alles EASY erledigen können.

Bon nuit
Joachim

Prima…

Na da bin ich aber PLATT…

Hab ich mir schon gedacht, vor allem nach der „programmier dir das“-Geschichte da unten.

Vielen lieben Dank.

Gerne doch…

Genau, dass was ich gesucht habe.
Arbeit optimal damit erledigt !!!

Super, Glückwunsch!

Stefan

Hallo Joachim,

schau mal -> Stefan hat mir diesen Tipp gegeben.
http://www.flazh.de/reptile/reptile.htm
Das war das was ich so sehr suchte.

Nettes kleines Programm - gerade
für HTML-Programmierer! Hab ich
mir gleich mal gezogen.

Nun habe ich alles EASY erledigen können.

Na o.k., aber Du wolltest doch irgendwann
mal mit der Programmiererei anfangen -
oder nicht? :wink:

Grüße & viel Erfolg

CMБ