93578
Nov 26, 2015, updated at Nov 27, 2015 (UTC)
5690
9
1
Per Batch erste 15 Zeichen in jeder Zeile einer Textdatei lassen. Den Rest - löschen. Wie?
Hallo an alle,
ich habe folgendes Problem: in einer Texdatei habe ich ca. 60.000.000 Zeilen (453 MB) Jede Zeile besteht aus dem verschiedenen Anzahl von Zeichen - von 1 bis 50. Jetzt will ich In jeder Zeile nur die ersten 15 Zeichen lassen (die Zeilen mit einem Zeichenanzahl weniger als 15 sollen erhalten bleiben. Es sollen also nur die Zeilen gekürzt werden, die mehr als 15 Zeichen beinhalten) und den Rest löschen.
Oder noch genauer ausgedruckt: ich will nur die Zeilen die mehr als 15 Zeichen beinhalten kürzen. Der Zeilen mit weniger als 15 Zeichen sollen nach wie vor vorhaden sein und nicht gekürzt werden. Es soll pro Zeile ein maximales Anzahl von Zeichen (15) sein. Es sollen aber alle 60.000.000 Zeilen vorhanden bleiben.
Wie kann ich das am besten tun?
Beispiel:
Vorher:
1234
123456789sdfnwsfn
qwidhq
qd08qf67287r823r738r7fsf
asfsfsfgv
Afsfsfsdd
4t34rgrghr
Nachher:
1234
123456789sdfnws
qwidhq
qd08qf67287r823r
asfsfsfgv
Afsfsfsdd
4t34rgrghr
Oder (falls es einfacher ist) - alle Zeilen mit dem Zeichenanzahl mehr als 15 aus dieser Textdatei löschen....
Grüße aus Hamburg,
Takitano
ich habe folgendes Problem: in einer Texdatei habe ich ca. 60.000.000 Zeilen (453 MB) Jede Zeile besteht aus dem verschiedenen Anzahl von Zeichen - von 1 bis 50. Jetzt will ich In jeder Zeile nur die ersten 15 Zeichen lassen (die Zeilen mit einem Zeichenanzahl weniger als 15 sollen erhalten bleiben. Es sollen also nur die Zeilen gekürzt werden, die mehr als 15 Zeichen beinhalten) und den Rest löschen.
Oder noch genauer ausgedruckt: ich will nur die Zeilen die mehr als 15 Zeichen beinhalten kürzen. Der Zeilen mit weniger als 15 Zeichen sollen nach wie vor vorhaden sein und nicht gekürzt werden. Es soll pro Zeile ein maximales Anzahl von Zeichen (15) sein. Es sollen aber alle 60.000.000 Zeilen vorhanden bleiben.
Wie kann ich das am besten tun?
Beispiel:
Vorher:
1234
123456789sdfnwsfn
qwidhq
qd08qf67287r823r738r7fsf
asfsfsfgv
Afsfsfsdd
4t34rgrghr
Nachher:
1234
123456789sdfnws
qwidhq
qd08qf67287r823r
asfsfsfgv
Afsfsfsdd
4t34rgrghr
Oder (falls es einfacher ist) - alle Zeilen mit dem Zeichenanzahl mehr als 15 aus dieser Textdatei löschen....
Grüße aus Hamburg,
Takitano
Please also mark the comments that contributed to the solution of the article
Content-Key: 289443
Url: https://administrator.de/contentid/289443
Printed on: April 26, 2024 at 19:04 o'clock
9 Comments
Latest comment
Powershell Einzeiler ...
Gruß grexit
gc 'c:\datei.txt' | %{$_[0..14] -join ''} | out-file 'c:\datei-out.txt'
Gruß grexit
Zitat von @93578:
Danke, Grexit! Es scheint zu funktionieren, aber ich warte noch auf die Ergebnisse - die Datei ist ja schließlich fast 400 MB groß....
Bei der Größe lass die Klammern um den ersten Abschnitt weg ...o. korrigiert.Danke, Grexit! Es scheint zu funktionieren, aber ich warte noch auf die Ergebnisse - die Datei ist ja schließlich fast 400 MB groß....
Dann läuft es schneller, aber du kannst dann nur in eine neue Datei schreiben, in die selbe Datei zurückschreiben geht in dem Fall dann nicht.
Aber bei 400MB kann das trotzdem so seine Zeit dauern.
Zitat von @93578:
Evtl. geht es schneller, wenn ich alle Zeilen, die mehr als 15 Zeichen beinhalten einfach lösche? Gibt's dazu auch ein Einzeiler?
Ja aber das würde nichts bringen, 400MB sind nunmal 400MB das dauert. Batch würde da womöglich eher die Grätsche machen.Evtl. geht es schneller, wenn ich alle Zeilen, die mehr als 15 Zeichen beinhalten einfach lösche? Gibt's dazu auch ein Einzeiler?
sed kann man ebenfalls für solche Dinge nutzen. Ob das schneller ist kannst du ja testen.
Kleinigkeit vergessen, sorry, ist oben korrigiert.