106 votes

Éditeur de texte Linux pour travailler avec des fichiers volumineux

J'ai un énorme fichier (~2GB) dans lequel je dois naviguer. Je n'ai pas vraiment besoin de l'éditer, juste de m'y déplacer efficacement.

J'ai essayé vim mais ça a foiré.

Des recommandations pour travailler avec des fichiers énormes sous Linux ?

Merci

84voto

Florian Points 1036

J'avais un fichier de 12 Go à éditer aujourd'hui. Le plugin vim LargeFile n'a pas fonctionné pour moi. Il utilisait toujours toute ma mémoire et affichait ensuite un message d'erreur :-(. Je ne pouvais pas non plus utiliser hexedit, car il ne peut rien insérer, seulement écraser. Voici une approche alternative :

Vous divisez le fichier, vous modifiez les parties et vous le recombinez. Vous avez cependant besoin de deux fois plus d'espace disque.

  • Recherchez quelque chose autour de la ligne que vous souhaitez modifier :

    grep -n 'something' HUGEFILE | head -n 1
  • Extraire cette partie du fichier :

    sed -n -e '4,5p' -e '5q' HUGEFILE > SMALLPART
    • El -n est nécessaire pour supprimer le comportement par défaut de sed qui consiste à tout imprimer.
    • 4,5p imprime les lignes 4 et 5
    • 5q abandonne sed après avoir traité la ligne 5
  • Modifier SMALLPART en utilisant votre éditeur préféré.

  • Combinez le fichier :

    (head -n 3 HUGEFILE; cat SMALLPART; sed -e '1,5d' HUGEFILE) > HUGEFILE.new 

    HUGEFILE.new sera maintenant votre fichier édité, vous pouvez supprimer l'original HUGEFILE .

30voto

Jim Dennis Points 5454

C'est une question récurrente depuis de nombreuses années. (Les chiffres changent sans cesse, mais le concept reste le même : comment afficher ou modifier des fichiers dont la taille dépasse la mémoire).

Évidemment more o less sont de bonnes approches de la simple lecture des fichiers --- less offre même vi comme les combinaisons de touches pour le défilement et la recherche.

A Viande fraîche Une recherche sur les "gros fichiers" suggère que deux éditeurs seraient particulièrement adaptés à vos besoins.

L'un d'eux serait : lfhex ... un éditeur hexagonal pour les gros fichiers (qui dépend de Qt). Celui-là, évidemment, implique l'utilisation d'une interface graphique.

Un autre semble être adapté à une utilisation sur console : couverture ... et il prétend avoir un vim -(y compris une interface de type ex mode ?).

Je suis sûr d'avoir vu d'autres éditeurs pour Linux/UNIX qui étaient capables de parcourir des fichiers sans les charger entièrement en mémoire. Cependant, je ne me souviens d'aucun de leurs noms. Je fais de cette réponse une entrée "wiki" pour encourager les autres à ajouter leurs liens vers de tels éditeurs. (Oui, je suis familier avec les moyens de contourner le problème à l'aide de split y cat mais je pense aux éditeurs, en particulier aux éditeurs console/curses qui peuvent s'en passer et nous épargner le temps, les délais et l'espace disque que de telles approches impliquent).

26voto

Pascal Thivent Points 295221

Vim dispose d'un LargeFile plugin pour les gros fichiers. Il configure essentiellement vim pour qu'il n'utilise pas de fichier d'échange et de niveaux d'annulation lors de l'ouverture de gros fichiers (comme dans Conseil Vim 611 ).

Mais je pense que je préférerais utiliser grep y split pour naviguer dans un tel fichier (voir Grep avec de grands fichiers de motifs ).

22voto

ChssPly76 Points 53452

Puisque vous n'avez pas besoin d'éditer réellement le fichier :

  1. view (o vim -R ) devrait fonctionner raisonnablement bien sur les gros fichiers.
  2. Ou vous pouvez utiliser more o less

8voto

Alex Points 51

Midnight Commander a une visionneuse intégrée qui gère bien les gros fichiers. Pas de chocking.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X