93578
Goto Top

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

Content-Key: 289443

Url: https://administrator.de/contentid/289443

Printed on: April 24, 2024 at 17:04 o'clock

Mitglied: 122990
Solution 122990 Nov 26, 2015, updated at Nov 30, 2015 at 12:49:47 (UTC)
Goto Top
Powershell Einzeiler ...
gc 'c:\datei.txt' | %{$_[0..14] -join ''} | out-file 'c:\datei-out.txt'  

Gruß grexit
Mitglied: 93578
93578 Nov 26, 2015 updated at 13:54:37 (UTC)
Goto Top
Danke, Grexit! Es scheint zu funktionieren, aber ich warte noch auf die Ergebnisse - die Datei ist ja schließlich fast 400 MB groß.... face-wink
Mitglied: 122990
122990 Nov 26, 2015, updated at Nov 27, 2015 at 08:37:10 (UTC)
Goto Top
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ß.... face-wink
Bei der Größe lass die Klammern um den ersten Abschnitt weg ...o. korrigiert.
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.
Mitglied: 93578
93578 Nov 26, 2015 at 14:37:51 (UTC)
Goto Top
Evtl. geht es schneller, wenn ich alle Zeilen, die mehr als 15 Zeichen beinhalten einfach lösche? Gibt's dazu auch ein Einzeiler?
Mitglied: 122990
122990 Nov 26, 2015, updated at Nov 27, 2015 at 08:37:02 (UTC)
Goto Top
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.

sed kann man ebenfalls für solche Dinge nutzen. Ob das schneller ist kannst du ja testen.
Mitglied: 93578
93578 Nov 26, 2015 updated at 14:50:29 (UTC)
Goto Top
Das Problem ist gelöst. SED habe ich nicht gebraucht. Einzeiler (Variant 2) funktioniert tatsächlich etwas schneller. Sonst nutze ich AkelPad 64 bit - er kann mit solchen "Monster"-Textdateien unter Windows umgehen (Notepad++ steigt bei solchen Datenvolumen aus). Danke, Grexit!
Mitglied: 93578
93578 Nov 27, 2015 updated at 08:43:40 (UTC)
Goto Top
Hallo Grexit,

leider ist das keine richtige Lösung.

Die ursprungliche Datei wurde auf 2-fache aufgebläht und ist noch nicht fertig... Außerdem sieht jetzt die Datei so aus:

Vorher:

12345
123456
12345

Nachher:

1
2
3
4
5

1
2
3
4
5
6

1
2
3
4
5

Ich wollte lediglich nur die ersten 15 Zeichen pro Zeile lassen, nicht aber diese Zeilen mit 1 Zeichen pro Zeile formatieren... ????
Mitglied: 122990
Solution 122990 Nov 27, 2015, updated at Nov 30, 2015 at 12:50:28 (UTC)
Goto Top
Kleinigkeit vergessen, sorry, ist oben korrigiert.
Mitglied: 93578
93578 Nov 30, 2015 at 12:50:21 (UTC)
Goto Top
Danke!!! Es hat geklappt. face-smile