Ich habe versucht, eine riesige Datei (~ 2 GB) in VIM zu öffnen, aber sie ist verstopft. Ich muss die Datei nicht bearbeiten, sondern nur effizient herumspringen.
Wie kann ich mit sehr großen Dateien in VIM arbeiten?
vim
large-files
hoju
quelle
quelle
:set binary
zuerst ...Antworten:
Ich hatte heute eine 12-GB-Datei zum Bearbeiten. Das vim LargeFile-Plugin hat bei mir nicht funktioniert. Es hat immer noch meinen gesamten Speicher verbraucht und dann eine Fehlermeldung ausgegeben :-(. Ich konnte Hexedit auch nicht verwenden, da es nichts einfügen kann, sondern nur überschreiben. Hier ist ein alternativer Ansatz:
Sie teilen die Datei, bearbeiten die Teile und kombinieren sie neu. Sie benötigen jedoch immer noch doppelt so viel Speicherplatz.
Suchen Sie nach etwas, das die Linie umgibt, die Sie bearbeiten möchten:
Extrahieren Sie diesen Bereich der Datei. Angenommen, die Zeilen, die Sie bearbeiten möchten, befinden sich in Zeile 4 und 5. Führen Sie dann folgende Schritte aus:
-n
Option ist erforderlich, um das Standardverhalten von sed zu unterdrücken und alles zu drucken4,5p
druckt die Zeilen 4 und 55q
bricht nach der Verarbeitung von Zeile 5 abBearbeiten Sie
SMALLPART
mit Ihrem Lieblingseditor.Kombinieren Sie die Datei:
HUGEFILE.new
Wird nun Ihre bearbeitete Datei, können Sie das Original löschenHUGEFILE
.quelle
Dies ist seit vielen Jahren eine wiederkehrende Frage. (Die Zahlen ändern sich ständig, aber das Konzept ist das gleiche: Wie kann ich Dateien anzeigen oder bearbeiten, die größer als der Speicher sind?)
Offensichtlich
more
oderless
sind gute Ansätze zum bloßen Lesen der Dateien -less
sogar Angebotevi
wie Tastenkombinationen zum Scrollen und Suchen.Eine Freshmeat- Suche nach "großen Dateien" legt nahe, dass zwei Editoren besonders für Ihre Anforderungen geeignet sind.
Eine wäre: lfhex ... ein Hex-Editor für große Dateien (der von Qt abhängt). Dies beinhaltet natürlich die Verwendung einer GUI.
Eine andere scheint für die Konsolennutzung geeignet zu sein: hed ... und behauptet, eine
vim
ähnliche Oberfläche zu haben (einschließlich einesex
Modus?).Ich bin sicher, ich habe andere Editoren für Linux / UNIX gesehen, die Dateien durchblättern konnten, ohne ihre Gesamtheit in den Speicher zu laden. Ich erinnere mich jedoch an keinen ihrer Namen. Ich mache diese Antwort zu einem "Wiki" -Eintrag, um andere zu ermutigen, ihre Links zu solchen Editoren hinzuzufügen. (Ja, ich bin mit Möglichkeiten vertraut, um das Problem mit
split
und zucat
umgehen. Ich denke jedoch an Editoren, insbesondere an Konsolen- / Fluch-Editoren, die darauf verzichten und uns die Zeit / Latenzen und den Speicherplatz sparen können, die solche Ansätze mit sich bringen.) .quelle
Da Sie die Datei nicht wirklich bearbeiten müssen:
view
(odervim -R
) sollte bei großen Dateien einigermaßen gut funktionieren.more
oder verwendenless
quelle
view
(nur ausprobiert und zeitgesteuert). Zugegeben, das ist nicht gerade augenblicklich, aber es funktioniert.Ich habe ein kleines Skript geschrieben, das auf Florians Antwort basiert und Nano (meinen Lieblingseditor) verwendet:
Verwenden Sie es so:
In diesem Beispiel öffnet nano die Zeilen 3 bis 8, Sie können sie bearbeiten, und wenn Sie speichern und beenden, werden diese Zeilen in der riesigen Datei automatisch mit Ihren gespeicherten Zeilen überschrieben.
quelle
Ich hatte das gleiche Problem, aber es war ein 300 GB MySQL-Dump und ich wollte das loswerden
DROP
und zu wechselnCREATE TABLE
,CREATE TABLE IF NOT EXISTS
also wollte ich nicht zwei Aufrufe von ausführensed
. Ich habe dieses schnelle Ruby-Skript geschrieben, um die Datei mit den folgenden Änderungen zu betrügen:Aufgerufen wie
quelle
chmod +x mreplace.rb
zuerst auszuführen , könnten Sie auch nurruby mreplace.rb ..
Für große Einzeiler (druckt Zeichen von
1
bis99
):quelle
Es ist bereits spät, aber wenn Sie nur durch die Datei navigieren möchten, ohne sie zu bearbeiten,
cat
können Sie den Job auch erledigen.oder alternativ einfach:
quelle
cat
es wahnsinnig dumm ist, die Datei zuerst zu tönen, da dies entweder bedeutet, dass sich die Datei vollständig im Speicher befindet (alsoless
die Datei suchen kann) oder überhaupt nicht gesucht werden kann.cat
gibt nur statischen Ausgabestream.emacs funktioniert sehr gut mit Dateien bis zu 100 Megabyte. Ich habe es ohne allzu große Probleme für Protokolldateien verwendet.
Aber im Allgemeinen finde ich es besser, ein Perl-Skript zu schreiben, wenn ich eine Analyse-Aufgabe habe.
quelle
Alter Faden. Aber trotzdem (Wortspiel :)).
Weniger funktioniert effizient, wenn Sie nicht bearbeiten und sich nur umschauen möchten, was bei der Prüfung großer Protokolldateien der Fall ist.
Suche in weniger Werken wie vi
Das Beste daran ist, dass es in den meisten Distributionen standardmäßig verfügbar ist. Dies ist also auch für die Produktionsumgebung kein Problem.
quelle
Das ist alt, aber benutze Nano, Vim oder Gvim
quelle