Reguläre Suchen/Ersetzen per CMD

Hi,

ich suche eine Möglichkeit per Windows-CMD eine Textdatei zu ändern. Und zwar sollen alle 0x0A (Zeilenumbruch) durch „/“ ersetzt werden, aber nicht am Zeilenende, wo „0x0D 0x0A“ steht.

Regulärer Ausdruck wäre
Suche: [^\x0D]\x0A
Ersetze durch: /

Das kann ich gut mit einem Editor, z.b. Programmer’s Notepad machen.
Da die Aufgabe aber täglich ansteht, würde ich gerne ein Batch machen.

Wer weiß was?

Danke
MArtin

Regulärer Ausdruck wäre
Suche: [^\x0D]\x0A
Ersetze durch: /

Dafür nimmt man z. B. sed. Gibt’s als standalone http://gnuwin32.sourceforge.net/packages/sed.htm oder unter cygwin oder…

HTH

Danke
Super, das war genau das, was ich gesucht habe.

Martin

Nägel mit der Bohrmaschine?
Meines Erachtens keine gute Idee.

Die konkrete Aufgabe ist dermaßen primitiv, dass man wunderbar ein betriebssystemunabhängiges Tool schreiben kann, das ANSI-Code entsprechend umsetzt. Ein Sechszeiler C-Code, einmal durch den Compiler und läuft wie Schmidts Katze.

Der Nachteil von grep und sed ist nämlich, dass sie genau für die gestellte Aufgabe NICHT gedacht sind. Beide Tools sind dazu geschrieben, Textdateien zeilenweise abzuarbeiten. Sie bearbeiten folglich die Zeichen zwischen den Zeilentrennern, nicht aber die Zeilentrenner selbst. Es sind supermächtige Tools, wenn man sie mit dem füttert, wofür sie ersonnen wurden. Aber wenn man sie mit Aufgaben betraut, für die sie nicht gedacht sind, kann das Laufzeitverhalten und das Ergebnis unerwartet sein.

Da die Systeme unterschiedliche Zeilentrenner verwenden, wird bei der Bearbeitung von Textdateien der Zeilentrenner gesondert behandelt. Es obliegt also der systemspezifischen Biblothek, was alles als Zeilentrenner erkannt wird, und was nachher beim Rausschreiben als Zeilentrenner verwendet wird.

Aus diesem Grunde würde ich ein Programm empfehlen, welches die Textdatei binär liest und deshalb auch betriebssystemunabhängig arbeitet.

Cioa, Allesquatsch

Hallo Allesquatsch,

ist Dein Name Programm?

Du hast natürlich recht. Ich habe mich auch schon gewundert, warum die RegExps nicht so funktionieren, wie z.B. im Programmer’s Notepad.
Die Erklärung hast Du gegeben: wenn er ein x0A findet, macht SED zwar die Ersetzung, schließt aber mit einem x0A und x0D ab. Das hat mich schon verwirrt.

Aber, obwohl die Aufgabe trivial ist, ist für mich ein 6-Zeilen C-Code eine unlösbare oder unglaublich aufwendige Aufgabe, da nehme ich gerne ein fertiges Tool.

Martin