Textdatei zeilenweise ab bestimmter Cursorposition auslesen und editieren
-
Hallo,
ich habe ein immer wiederkehrendes Problem in einem Logfile. Optimal wäre ein Skript mit dem ich das Log-File öffne, dieses zeilenweise abarbeite und korrigiere.
Hierfür müsste ich in jeder Zeile, an eine bestimmte Postion springen, die dort befindlichen Daten auslesen und diese an eine andere Position innerhalb der Zeile schreiben.
Gibt es denn einen gängigen Befehl für das Positionieren des Cursors bzw. für der Auslesen von Daten ab einer bestimmten Position (bspw. von Postion 12 - 23, 25 - 27) ?
Vielen Dank schonmal!
MfG, MaMaMu
-
Hmm, ich würde die Zeilen normal mit getline in einen string einlesen, dann den gewünschten Abschnitt mit substr ausscheiden und dann den String neu zusammensetzen.
-
Alternativ gibt es da noch seek
-
Danke für die Antworten! Ich habe es gleich mal mit substr probiert, damit klappt es sehr gut. Ein Problem habe ich allerdings noch.
Ich möchte die neuen strings in eine separate Datei schreiben, leider wird immer nur die letzte Zeile geschrieben. Die vorherigen Zeilen werden demnach immer durch die folgenden Zeilen überschrieben. Kann man die Cursorposition innerhalb der Datei immer ans Ende setzen? Wenn ja, wie?

Gruß, MaMaMu
-
mamamu schrieb:
Danke für die Antworten! Ich habe es gleich mal mit substr probiert, damit klappt es sehr gut. Ein Problem habe ich allerdings noch.
Ich möchte die neuen strings in eine separate Datei schreiben, leider wird immer nur die letzte Zeile geschrieben. Die vorherigen Zeilen werden demnach immer durch die folgenden Zeilen überschrieben. Kann man die Cursorposition innerhalb der Datei immer ans Ende setzen? Wenn ja, wie?

Gruß, MaMaMu
Hmm, normalerweise schreibt er sequentiell. Kann es sein, dass Du die Datei vor jedem Schreibvorgang immer neu öffnest? Und das dann auch ohne die Option ios::app?
Zeige doch mal bitte ein bischen Quellcode, wie Du das Schreiben der Zeilen realisiert hast.
-
Du kannst auch ans Ende seeken. Schau dafür in die Referenz, dort sind die Falgs beschrieben.