J'ai besoin de lire des fichiers journaux gigantesques sur un système Linux. Il y a beaucoup de fouillis dans les journaux. En ce moment, je fais quelque chose comme ça:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
Mais c'est fastidieux - chaque fois que je veux ajouter un autre filtre, je dois quitter less
et modifier la ligne de commande. Certains filtres sont relativement compliqués et peuvent être multilignes.
Je voudrais un moyen d'appliquer des filtres pendant que je lis le journal et un moyen de sauvegarder ces filtres quelque part.
Y at-il un outil qui peut faire cela pour moi? Je ne peux pas installer de nouveau logiciel, donc j'espère que c'est quelque chose qui serait déjà installé - par exemple, moins, vi, quelque chose dans une librairie Python ou Perl, etc.
Changer le code qui génère le journal pour générer moins n'est pas une option.
Essayez l’outil multitail - tout en vous permettant d’afficher plusieurs journaux à la fois, mais je suis certain qu’il vous permet d’appliquer les filtres de regex de manière interactive.
Utilisez la commande &pattern
avec moins.
De la page de manuel pour moins
&modèle
Display only lines which match the pattern; lines which do not match the pattern are not displayed. If pattern is empty (if you type & immediately followed by ENTER), any filtering is turned off, and all lines are displayed. While filtering is in effect, an ampersand is displayed at the beginning of the Prompt, as a reminder that some lines in the file may be hidden. Certain characters are special as in the / command: ^N or ! Display only lines which do NOT match the pattern. ^R Don't interpret regular expression metacharacters; that is, do a simple textual comparison.
Sur la base de la réponse de ghostdog74 et de la page de manuel less
, j'ai proposé ceci:
~/.bashrc
:export LESSOPEN='|~/less-filter.sh %s'
export LESS=-R # to allow ANSI colors
~/less-filter.sh
:#!/bin/sh
case "$1" in
*logfile*.log*) ~/less-filter.sed < $1
;;
esac
~/less-filter.sed
:/deleteLinesLikeThis/d # to filter out lines
s/this/that/ # to change text on lines (useful to colorize using ANSI escapes)
Ensuite:
less logfileFooBar.log.1
- applique le filtre s’applique automatiquement.cat logfileFooBar.log.1 | less
- pour afficher le journal sans filtrageC'est suffisant pour le moment mais j'aimerais quand même pouvoir éditer les filtres à la volée.
voir la man page de moins. Vous pouvez utiliser certaines options pour rechercher des mots, par exemple. Il dispose également d'un mode d'édition de ligne.
Il existe une application de Casstor Software Solutions appelée LogFilter (www.casstor.com) qui permet de modifier les fichiers texte Windows/Mac/Linux et d’effectuer facilement le filtrage des fichiers. Il supporte plusieurs filtres ainsi que des expressions régulières. Je pense que c'est peut-être ce que vous cherchez.