[BraLUG] Hilfe bei Regular Expression

Ingo Schaefer ingo at ingo-schaefer.de
Mi Feb 14 09:44:52 CET 2018


Am 14.02.18 um 09:33 schrieb Uwe Berger:
> Hallo Rob,
> 
> ich habe es mal mit einer "echten" Windows-Textdatei ausprobiert.
> 
> Im Hex-Editor sieht man, dass, wie du schon sagtest, 0x0D, 0x0A
> (also CR, LF also \r, \n) am Zeileende steht.


> Mit {Windows[^\n]*} wird die Ersetzung trotzdem richtig gemacht, in
> der modifizierten Datei steht am Ende der Ersetzungszeile dann auch
> wieder 0x0D, 0x0A. Die nachfolgenden Textzeilen sind auch, wie
> gewollt vorhanden.
> 
> Wenn ich {Windows[^\r]*} verwende, was mir, nach deiner Anmerkung,
> auch logischer erscheint, wird die Ersetzung ebenfalls gemacht, aber
> alles ab der Ersetzungszeile (also der folgende Text bis zum
> Dateiende) abgeschnitten und es steht 0x0D, 0x0A als letzte Zeichen
> in der Datei..., komisch...

Dann lass doch die Regex auch auf das \r\n mit matchen und ersetze es.

regsub {Windows[^\r]*\r\n} $data {Linux\r\n} data

Oder: wenn Du _eh_ auf Dateien arbeitest, kannst Du natuerlich auch was
anderes als TCL nehmen. Sed beispielsweise.

> Irgendwie bin ich jetzt verunsichert, zumal ich mit dem Script
> mehrere zehntausende Dateien modifizieren will und ich mich darauf
> verlassen muss, dass die Ersetzung korrekt funktioniert...

Jo, testen und sicher sein ist besser.

meint
Ingo

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 163 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://list.bralug.de/pipermail/bralug/attachments/20180214/a1657874/attachment.sig>


Mehr Informationen über die Mailingliste Bralug