Thread Ersetzen von Zeilen mit Strings und Zahlen in längerem File
(21 answers)
Opened by Erin at 2012-08-01 17:03
Ich denke, das Hauptproblem besteht darin, dass Deine Texte aus mehreren Zeilen bestehen und die Dateien standardmäßig zeilenweise gelesen werden.
In der Hoffnung, dass die Daten-Dateien nicht zu groß sind, könnte man sie komplett einlesen und dann die Ersetzung machen. Beispiel: Code: (dl
)
1 # Kommando zum Ersetzen ($ Am Anfang ist der Systemprompt) edit: Erklärungen: -i.bak führe Dateien in der Datendatei aus; lege aber vorher eine Sicherung mit Endung .bak an -p führe den Code als Schleife über die (i.d.R. zeilenweise) gelesenen Daten aus und gebe jeweils die Zeile wieder aus -e hier folgt der Code BEGIN { $/=undef; $search = "abc\nabc\nabc"; $replace = "123\n123\n123"; } Damit werden zu Beginn, noch vor der gewünschten Verarbeitung als Schleife einige Variable (neu) gesetzt $/=undef; damit wird veranlasst, dass die Datei am Stück komplett gelesen wird (man hat dann quasi nur einen Schleifendurchlauf) $search = "abc\nabc\nabc"; wonach soll gesucht werden (dreizeiliger String) $replace = "123\n123\n123"; womit soll ersetzt werden (dreizeiliger String) s/$search/$replace/msg; Der Code, der pro Schleifendurchlauf ausgeführt wird data.txt Die Datendatei, die verarbeitet wird edit2: überflüssiges Newline am Ende von $search & $replace entfernt edit3: PS: Der hier gezeigte Ansatz ist kein Skript, sondern ein Kommando, das auf der Kommandozeile, bzw. Shell aufgerufen wird. Last edited: 2012-08-01 17:34:24 +0200 (CEST) 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! |