it-swarm.com.de

Wie öffne ich eine große Datei in einem Terminal (bei Verwendung von vim bleibt das Terminal hängen)?

Ich benutze Ubuntu 14.04. Ich habe eine große Protokolldatei:

-rw-r--r-- 1 Rails root 1792390124 Jan 10 14:54 /var/log/Unicorn/unicorn.log

Trotzdem muss ich es öffnen und einige Dinge darin finden. Ich habe vim ausprobiert, bin aber gelaufen

vim /var/log/Unicorn/unicorn.log

öffnet nur einen leeren Bildschirm und auch wenn ich es benutze Ctrl+C, nichts passiert. Das Terminal ist aufgehängt. Wie kann ich die Datei öffnen und mich umsehen, ohne die Hardware auf meinem Computer zu aktualisieren (aber ich bin bereit, Software zu installieren) (ich muss sie nicht bearbeiten, ich muss nur einige Zeilen lesen)?.

9
Dave

Wenn Sie mit großen Dateien arbeiten, ist es besser, die Informationsmenge zu minimieren, mit der Sie arbeiten werden. Dafür gibt es Tools. Ein erwähntes Tool ist grep, um nach bestimmten Zeilen zu suchen, die Sie benötigen. Weitere zwei Tools, die ich empfehlen würde, sind tail und head, mit denen eine bestimmte Anzahl von Zeilen oder Bytes am Anfang der Datei (head) oder am Ende (tail) angezeigt werden kann ] _). Dies ist nützlich, wenn Sie nur diese spezifischen Teile der Datei lesen müssen, aber nichts dazwischen.

Alternativ können Sie den Befehl split verwenden. Es kann eine Datei basierend auf der Anzahl der Bytes oder Zeilen aufteilen. Zum Beispiel,

$ mkdir SPLIT

$ cd SPLIT/                                                                                                       

$ split -l 5  /etc/passwd

$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj

Jetzt ist mein /etc/password in kleinere Dateien mit jeweils 5 Zeilen aufgeteilt, die Sie mit vim oder einem anderen Texteditor öffnen können

4

Verwenden Sie den Befehl less. less verwendet eine effizientere Methode zum Lesen einer Datei in den Speicher. Es gibt 2 gleichwertige Befehle: more und most (der letzte, den Sie installieren müssen). Diese speichern die einzelne Seite.

Ihre beste Option für die Suche wäre jedoch die Verwendung von grep. Beispiel:

grep {searchstring} {file}

Schauen Sie sich logrotate an, damit Sie das Protokoll über mehrere Dateien verteilen können.

Und split kann Ihre aktuelle Datei in gleiche Teile aufteilen, damit Sie das Protokoll einfacher lesen können.

6
Rinzwind

Es hängt davon ab, was Ihr Ziel ist.

Wenn Sie durch die gesamte Protokolldatei scrollen möchten, können Sie die less- oder more-Befehle verwenden, um eine seitenweise Ansicht der vorliegenden Datei zu erhalten.

Wenn Sie jedoch wissen, wo sich die gesuchte Datei befindet, können Sie mit den Befehlen head oder tail einen Abschnitt/Auszug der Datei abrufen. Weitere Informationen zur Suche nach genauen Teilen finden Sie unter man head und man tail.

Wenn Sie nach einem bestimmten String/Eintrag suchen, können Sie grep verwenden, um die Datei nach Ihrem String zu durchsuchen. Sie können entweder cat file | grep something oder grep something file verwenden, je nachdem, was Sie tun möchten.

Wenn Sie jedoch erweiterte Funktionen ausführen möchten, können Sie ggf. sed oder awk für erweiterte Funktionen verwenden.

5
Kaz Wolfe

Wenn Sie genau wissen, welche Zeile Sie möchten, verwenden Sie grep. Wenn Sie jedoch nach etwas fischen, bei dem Sie sich nicht sicher sind, ist die Verwendung von less besser, da der Kontext angezeigt wird (was besonders für Protokolldateien nützlich ist).

Geben Sie den Befehl / in less ein, um das Suchfeld zu öffnen. Geben Sie ein, was Sie möchten, und drücken Sie die Eingabetaste. Wenn Sie nach demselben Wort suchen möchten, geben Sie n ein, um fortzufahren, und N, um zurückzufahren. Um zum Ende der Datei zu springen, geben Sie G und dann N oder ? ein.

0
Mark Lakata