![Linux-Texteditoren können mit sehr, sehr langen Zeilen und Datensätzen fester Länge arbeiten](https://rvso.com/image/1414641/Linux-Texteditoren%20k%C3%B6nnen%20mit%20sehr%2C%20sehr%20langen%20Zeilen%20und%20Datens%C3%A4tzen%20fester%20L%C3%A4nge%20arbeiten%20.png)
Ich habe hier ein ziemlich einfaches Problem: Ich habe einen Textabschnitt, der aus einer einzigen riesigen Zeile besteht (~150.000 Zeichen). Keine Zeilenumbrüche, und es handelt sich um eine flache Datei mit fester Länge (d. h. sie wurde von einem COBOL
Programm erstellt), sodass die Einführung von Zeilenumbrüchen nicht nur umständlich ist, sondern auch nicht gerade hilfreich, wenn ich versuche, Änderungen an der Datei vorzunehmen.
Die meisten Texteditoren haben mit einer einzigen so großen Zeile Probleme ( less
mag das nicht, Gedit
mag das nicht, nano
mag das nicht, ich habe gehört, vim
mag das nicht usw.), aber sie funktionieren.
Hat jemand Vorschläge für einen Editor, der für die Daten, mit denen ich arbeite, besser geeignet wäre? Es ist zwar nur eine einzige Zeile, aber sie verursacht trotzdem mehr Probleme als eine Textdatei mit mehr als 1 GiB und normal langen Zeilen...
Noch besser wäre es, wenn es damit funktionieren würde EBCDIC
und nicht abstürzt, wenn es auf Nullbytes stößt, oder diese beim Zurückschreiben verstümmelt (einige Felder sind binär codierte Dezimalzahlen).
Bitte beachten Sie, dass es hier nicht um Dateien geht, die im Sinne einer großen Rohgröße (die Datei enthält nur eine einzige Zeile) groß sind, sondern um die Tatsache, dass die meisten Editoren nicht für die Verarbeitung sehr langer Zeilen optimiert sind.
Antwort1
Ich denke, dass sich eine Datei wie die von Ihnen beschriebene aus praktischen Gründen wie eine Binärdatei verhält und Sie sie auch als solche behandeln sollten.
Sie könnten es mit einem Hex-Editor angehen, aber das hilft Ihnen beim EBCIDC-Teil nicht.
Wenn Sie diese Datei häufig bearbeiten müssen und mit ihrem Datensatzformat mit fester Länge bestens vertraut sind, lohnt es sich möglicherweise, schnell etwas in Perl oder einer anderen Sprache zu erstellen (ich schlage Perl vor, da es alt ist und sehr wahrscheinlich über Module verfügt, die UTF-8 usw. in EBCIDC konvertieren), das mit dem spezifischen Format dieser Datei funktioniert.
Antwort2
Eigentlichgerade versuchtvim auf einer Datei mit einer einzelnen Zeile von 150.000 Zeichen und es lief reibungslos.
Ich schätze also, Sie sollten es wirklich versuchen, falls Sie es nicht getan haben, nur weil you heard vim doesn't like such kind of files
…
So habe ich meine Datei erhalten:
seq 150000 | while read num; do echo -n "b" ; done > megaline.txt
Antwort3
Ich habe bei meiner Emacs-Installation dieselbe Methode wie Dakatine ausprobiert und es hat gut funktioniert. Keine Hänger, nichts. Wenn Sie einfachen Text bearbeiten (also keine der Analysen durchführen, die ein Modus für eine Programmiersprache erfordert, in text-mode
), wird es wirklich, wirklich schwer sein, Emacs zu blockieren. Das Verhalten, das Sie bei Eclipse sehen, ist wahrscheinlich ein Spiegelbild der Tatsache, dass Eclipse versucht, eine Art Analyse des Textes durchzuführen, während es ihn rendert – das Gleiche gilt für Gedit. Ich kann Ihr Problem auch mit nicht reproduzieren less
– bei mir funktioniert es einwandfrei.
Antwort4
Versuche es:JEdit - Ein Programmiereditor
Es hat einige erweiterte Pufferfunktionen und hochoptimierte E/A, braucht aber eine Weile zum Starten (aufgrund der JVM). Ich habe es verwendet, um über 1 GB große Dateien ohne Probleme anzuzeigen und zu bearbeiten – zumindest unter Debian. Ich kann jedoch nicht garantieren, dass es unter Windows genauso gut funktioniert ... :)