[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