Wie man eine riesige Textdatei über Vi oder gedit anzeigt

24

Ich habe eine wordlist.txtvon 11 GB durch generiert crunch-3.6. Wenn ich versuche, die Datei mit Vi oder gedit zu öffnen, treten aufgrund der Dateigröße Probleme auf. Wie kann ich diese Datei anzeigen?

vais sai
quelle
8
Ich denke nicht, dass es ein Duplikat ist. Obwohl es eng verwandt ist und einige Antworten hilfreich sein könnten, geht es hier um das Anzeigen und nicht um das Bearbeiten. Die akzeptierte Antwort ist für die Anzeige nicht hilfreich.
pLumo
1
Genau. Das Anzeigen einer Datei und das Bearbeiten einer Datei sind nicht dasselbe, und die Unterscheidung wird nur dann wichtiger, wenn die Datei sehr groß ist.
Eliah Kagan

Antworten:

43

Verwenden Sie keinen Text verwenden Editor für Betrachtungs Text.

Es gibt bessere Werkzeuge:


lessAnzeigen von Dateien mit (Blättern mit Leertaste, Ende, Start, Bild-Auf, Bild-Ab; Suchen mit "/ something"; Verlassen mit q).

Aus dem lessHandbuch:

Less muss vor dem Start nicht die gesamte Eingabedatei lesen, daher startet es bei großen Eingabedateien schneller als Texteditoren wie vi (1).

Verwendung:

less wordlist.txt

Betrachten Sie die Verwendung von less -n:

-n oder --Zeilennummern:

Unterdrückt Zeilennummern. Die Standardeinstellung (Verwendung von Zeilennummern) kann in einigen Fällen dazu führen, dass weniger langsamer ausgeführt wird, insbesondere bei einer sehr großen Eingabedatei. Das Unterdrücken von Zeilennummern mit der -nOption vermeidet dieses Problem.

(Danke, dass du -n option @pipe vorgeschlagen hast)


Verwenden grepSie diese Option , um nur die Zeilen abzurufen, an denen Sie interessiert sind:

# Show all Lines beginning with A:
grep "^A:"  wordlist.txt

# Show all Lines ending with x and use less for better viewing
grep "x$"  wordlist.txt | less

Verwenden Sie headoder tail, um die ersten oder letzten n Zeilen abzurufen

head wordlist.txt
tail -n 200 wordlist.txt

Informationen zum Bearbeiten von Text finden Sie in dieser Frage .

pLumo
quelle
4
Beachten Sie, dass moreim Gegensatz dazu die gesamte Datei in den Speicher geladen wird less. Wenn es so groß ist, würde ich davon abraten, es zu verwenden. Die beste Option wäre auf jeden Fall zu verwenden grep.
Nepho
1
Mein Kommentar könnte tatsächlich falsch sein. Ich habe angefangen, beide moreund den lessQuellcode zu überprüfen , und beide scheinen entweder openoder zu verwenden fopen, was
meines Wissens
2
Einverstanden. moreist ein sehr veraltetes Dienstprogramm, wenn lesses verfügbar ist, denke ich nicht, warum Sie es verwenden würden more.
Nepho
1
@Nepho morehat einen großen Vorteil gegenüber less: Es unterstützt den LESSOPENEingabe-Präprozessor nicht. Wenn Sie versuchen, den Rohtext einer Manpage oder etwas anderem anzuzeigen, ist es viel schneller, more my_docs.manals die lessDokumentation zu durchsuchen, um herauszufinden, wie der Präprozessor unterdrückt werden kann.
Mark
1
Ich schlage vor, weniger mit so etwas wie less -nSfür große Dateien aufzurufen , um die Dinge ein wenig zu beschleunigen.
Pipe
10

Oft reicht "grep" aus, um das zu finden, was Sie brauchen.

Wenn Sie mehr "Kontext" für eine bestimmte Zeile benötigen, verwenden Sie "grep -n", um die Zeilennummern der interessierenden Zeilen zu ermitteln, und "sed", um einen Teil der Datei um diese Zeile herum auszudrucken :

$ grep -n 'word' file 
123:A line with with word in it 

$ sed -n '120,125p' file 
A line 
Another line
The line before
A line with with word in it 
The line after
Something else
Phill W.
quelle
10
Sie brauchen kein sed, Sie können grep -Bund verwenden -A , um die Zeilen B vor und A nach ... zu drucken
pLumo
7
@RoVo Oder -Cfür ein C- Stück (vor und nach).
wjandrea