Thread Noob mit Regex Problemstellung (6 answers)
Opened by NitroXpress at 2015-05-02 10:59

Linuxer
 2015-05-03 01:06
#180913 #180913
User since
2006-01-27
3871 Artikel
HausmeisterIn

user image
Hi,

das Array ist noch nicht mal nötig. Wenn das Dateien sind, dann lädst Du so die gesamte Datei erstmal in den Arbeitsspeicher. Mit Glück passiert nix Schlimmes, mit etwas Pech fängt die Maschine das Swappen an und mit viel Pech platzt das Programm mit einem "out of memory" Fehler...

Dann ist Dein Kriterium noch etwas unklar. Die Ersetzung soll stattfinden, wenn in der Zeile "F30000" auftaucht; was ist, wenn "F300000" (also F30000 als Teilstring enthalten ist) auftaucht. Soll dann immer noch ersetzt werden oder nicht?

Das zu ersetzende "G1" steht immer am Zeilenanfang? Dann würde ich es auch in der Ersetzung entsprechend verankern.


Die Aufgabe lässt sich sogar recht schön als sogenannter Perl-Einzeiler darstellen; hier sogar mit Anlegen einer Backup-Datei.

Lösung als Perl-Einzeiler (alles ersetzen, auch bei "F300000"):
Code: (dl )
$ perl -i.old -pE 's/^G1/G0/ if m/F30000/' ncfile.dat


Lösung als Perl-Einzeiler (Ersetzen wenn F30000 mit Wortgrenzen gefunden wird):
Code: (dl )
$ perl -i.old -pE 's/^G1/G0/ if m/\bF30000\b/' ncfile.dat



Beide Varianten legen eine Kopie der Originaldatei mit einer Endung ".old" an (Dank der Option -i.old).
Für einen Einsatz im WinDOS-System muss wahrscheinlich der ' durch ein " ersetzt werden.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Noob mit Regex Problemstellung