Comment afficher un énorme fichier texte via Vi ou gedit

24

J'ai généré un wordlist.txtde 11 Go par crunch-3.6. Lorsque j'essaie d'ouvrir le fichier avec Vi ou gedit, je rencontre des problèmes en raison de la taille du fichier. Comment puis-je voir ce fichier?

vais sai
la source
8
Je ne pense pas que ce soit un doublon. Bien que ses réponses étroitement liées et certaines puissent être utiles, celle-ci concerne la visualisation et non la modification. La réponse acceptée n'est pas utile pour la visualisation.
pLumo
1
Je suis d'accord. La visualisation d'un fichier et sa modification ne sont pas la même chose, et la distinction ne devient plus importante que lorsque le fichier est très volumineux.
Eliah Kagan

Réponses:

43

N'utilisez pas d' éditeur de texte pour afficher du texte.

Il y a de meilleurs outils:


Afficher les fichiers avec less(Défilement avec espace, Fin, Accueil, PageUp, PageDown; Rechercher avec "/ quelque chose"; Quitter avec q).

Du lessmanuel:

Moins n'a pas à lire l'intégralité du fichier d'entrée avant de commencer, donc avec des fichiers d'entrée volumineux, il démarre plus rapidement que les éditeurs de texte comme vi (1).

Usage:

less wordlist.txt

Pensez à utiliser less -n:

-n ou --line-numéros:

Supprime les numéros de ligne. La valeur par défaut (pour utiliser les numéros de ligne) peut ralentir l'exécution de less dans certains cas, en particulier avec un fichier d'entrée très volumineux. La suppression des numéros de ligne avec l' -noption évitera ce problème.

(merci d'avoir suggéré l'option -n @pipe)


Utilisez greppour obtenir uniquement les lignes qui vous intéressent:

# 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

Utilisez headou tailpour obtenir la première ou la dernière ligne n

head wordlist.txt
tail -n 200 wordlist.txt

Pour modifier le texte, reportez-vous à cette question .

pLumo
la source
4
Notez que moreva charger le fichier entier en mémoire, contrairement à less. Si c'est si gros, je déconseille de l'utiliser. La meilleure option serait certainement d'utiliser grep.
Nepho
1
Mon commentaire pourrait en fait être faux. J'ai commencé à vérifier les deux moreet lessle code source, et les deux semblent utiliser soit openou fopen, ce qui ne change rien en ce qui concerne la façon dont le fichier est chargé, pour autant que je sache
Nepho
2
D'accord. moreest un utilitaire très daté, s'il lessest disponible, je ne pense à aucune raison pour laquelle vous l'utiliseriez more.
Nepho
1
@Nepho, morea un énorme avantage sur less: il ne prend pas en charge le LESSOPENpréprocesseur d'entrée. Si vous essayez d'afficher le texte brut d'une page de manuel ou quelque chose du genre, il est beaucoup plus rapide de taper more my_docs.manque de fouiller dans la lessdocumentation pour savoir comment supprimer le préprocesseur.
Mark
1
Je suggère d'invoquer moins en utilisant quelque chose comme less -nSpour les gros fichiers, pour accélérer un peu les choses.
pipe
10

Souvent, juste "grep" suffit pour trouver ce dont vous avez besoin.

Si vous avez besoin de plus de "contexte" autour d'une ligne particulière, utilisez alors "grep -n" pour trouver les numéros de ligne des lignes d'intérêt, puis utilisez sed pour imprimer un "morceau" du fichier autour de cette ligne:

$ 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.
la source
10
pas besoin de sed, vous pouvez utiliser grep -Bet -A d'imprimer des lignes B vant et A près avoir ...
plumo
7
@RoVo Ou -Cpour un morceau C (avant et après).
wjandrea