GNU/Linux >> Tutoriels Linux >  >> Linux

Grep dans un énorme fichier journal (> 14 Go) uniquement les derniers x Go ?

Solution 1 :

Je suppose que vous pouvez utiliser tail pour ne sortir que les 4 Go environ en utilisant le -c commutateur

-c, --bytes=[+]NUM
sortir les NUM derniers octets ; ou utilisez -c +NUM pour sortir en commençant par l'octet NUM de chaque fichier

Vous pourriez probablement faire quelque chose avec dd aussi en définissant bs=1 et skip vers le décalage que vous souhaitez démarrer, par exemple

dd if=file bs=1024k skip=12g | grep something

Solution 2 :

Je poste simplement ceci parce que certains des commentaires l'ont demandé.

Ce que j'ai fini par utiliser était (fichier de 15 Go). Cela a fonctionné très rapidement et m'a fait gagner beaucoup de temps.

tail -f -c 14G file | grep something

J'ai aussi fait un benchmark très rudimentaire sur le même fichier. J'ai testé :

grep xxx fichier
// a duré une éternité (> 5 minutes)

dd if=fichier bs=1 sauter=14G | grep xxx
// très rapide <1 sec

queue -c 14g | grep xxx
// assez rapide <2 sec

le tail est juste un peu plus court.

NB : le suffixe utilisé g et G diffèrent par commande (Ubuntu 15.10)

Solution 3 :

Cela ne répond pas à la question du titre, mais cela fera ce que vous voulez faire. Utilisez tac pour inverser le fichier, puis utilisez grep pour trouver votre chaîne. Si votre chaîne n'apparaît qu'une seule fois ou un nombre de fois connu dans le fichier, laissez-la s'exécuter jusqu'à ce qu'elle trouve le nombre d'occurrences connu. De cette façon, si votre hypothèse sur l'endroit où il se trouve dans le fichier est incorrecte, il le trouvera toujours. Si vous voulez le limiter, vous pouvez utiliser head pour le faire. La commande principale irait entre le tac et le grep.

La commande ressemble donc à :

tac < logfile | grep myString

Linux
  1. Grep Word dans un fichier puis copier le fichier ?

  2. Sortie vers Stdout et en même temps Grep dans un fichier ?

  3. Supprimer la virgule entre les guillemets uniquement dans un fichier délimité par des virgules ?

  4. Trouver uniquement la première occurrence en utilisant uniquement Grep ?

  5. diff pour afficher uniquement les noms de fichiers

Zsync - Un utilitaire de transfert de fichiers pour télécharger uniquement les nouvelles parties d'un fichier

Le didacticiel de la commande Grep avec des exemples pour les débutants

Comment compter le nombre de lignes dans un fichier après une correspondance Grep ?

Comment filtrer le journal Dmesg pour ne voir que les erreurs ?

Les 15 meilleurs outils de visionneuse de journaux Linux et de gestion de fichiers journaux

Fichier journal de queue sur plusieurs machines via ssh