GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire bon usage de la commande 'grep'

Les systèmes Linux et UNIX sont livrés avec une commande shell appelée "grep". Cela recherche simplement un texte spécifié, ou un motif, dans un fichier ou un répertoire entier. L'utilisation la plus courante consiste à rechercher rapidement dans un fichier les occurrences d'un modèle, qui peuvent être en texte brut ou sous la forme d'une expression régulière.

Ici, les modèles utilisés seront du texte simple plutôt que des expressions régulières. Cet article vous montrera comment utiliser grep lors de la recherche dans des fichiers texte pour un ou plusieurs modèles. Comment éliminer les lignes contenant certains modèles de votre recherche et comment exécuter plusieurs commandes grep à l'aide de canaux pour un filtrage plus avancé.

​Aperçu de base de 'grep'

​Regardez la sortie du terminal pour ces commandes :

/etc$ grep unix group
/etc$ grep -n unix group
/etc$ grep -w unix group
/etc$ grep -r -s unix . 

Dans cette capture d'écran, j'utilise grep pour rechercher le mot "unix" dans le fichier /etc/group. Il renvoie toutes les occurrences de unix_allsort (nom d'utilisateur pour cet ordinateur) en conséquence. La deuxième commande a fait la même chose, mais avec le paramètre -n, elle montre à quelle ligne le motif a été trouvé dans un fichier.

La troisième commande est légèrement différente avec le paramètre '-w', qui indique à grep de faire correspondre un mot entier plutôt qu'un simple morceau de texte. Comme le fichier de groupe n'avait pas "unix" comme mot entier, il n'y avait pas de sortie.

La quatrième commande est différente. Le premier paramètre, '-r', indique à grep de rechercher dans un répertoire de manière récursive. Le répertoire, dans ce cas, est le répertoire courant (/etc), indiqué par le ‘.’. Le paramètre suivant, "-s", indique à grep d'éviter de signaler des erreurs, telles que des erreurs "Autorisation refusée", à la sortie, afin de ne pas polluer la sortie avec des erreurs. Ainsi, la quatrième commande grep répertorie toutes les occurrences de "unix" dans tous les fichiers de /etc et de ses sous-répertoires, où toutes les erreurs sont simplement ignorées.

Plusieurs modèles

Pour rechercher plusieurs modèles, créez simplement un fichier texte contenant une liste de modèles, un par ligne, à rechercher dans un fichier ou un répertoire et utilisez le paramètre -f pour charger le fichier contenant les modèles. $ grep -f ~/groups.txt /etc/group

Ce fichier contient ces motifs à rechercher :

unix_allsort
vidéo
sudo

Toutes les lignes contenant au moins un de ces motifs seront affichées sur la sortie du terminal.

Redirection de la sortie

N'oubliez pas que l'utilisation de grep sur un gros fichier, voire plusieurs fichiers, peut produire beaucoup de sortie. Donc, une bonne chose à faire est de diriger la sortie vers la commande "moins" afin que vous puissiez faire défiler la sortie dans son intégralité. $ grep -r -n -f filtre.txt ressources/js | less ​Ou redirigez sa sortie vers un fichier texte pour l'afficher plus tard. $ grep -r -n -f filter.txt ressources/js> ~/result.txt  

​Quelque chose d'un peu plus avancé

Il y a une astuce que j'utilise parfois avec des tuyaux pour rechercher des modèles et filtrer également les sorties indésirables. La sortie de canalisation de grep à afficher dans "less" était un exemple.

Deux exemples utilisant le journal du noyau (/var/log/kern.log). Regardez cette image :

Ce que j'ai fait est d'utiliser grep pour répertorier toutes les lignes contenant le mot entier "pci" (utilisé le paramètre -w pour correspondre à des mots entiers uniquement), rediriger la sortie vers une autre commande grep pour filtrer les motifs que je ne voulais pas à voir dans la sortie.

Les modèles que je filtrais étaient "ohci-pci" et "ehci-pci".

Dans cette image, j'ai d'abord filtré les lignes contenant des motifs que je ne voulais pas, puis j'ai recherché dans la sortie ce que je voulais. J'ai également ajouté un autre modèle à filtrer, "pci =nocrs". Il y a plus de fonctionnalités dans grep que ce qui est couvert ici, donc si vous prévoyez d'utiliser grep régulièrement, prenez le temps de rechercher ce qu'il peut faire et comment mieux utilise le. Consultez également pdfgrep pour effectuer une recherche dans les fichiers PDF.

Conclusion

Un outil comme grep est en effet extrêmement utile, pour ne pas dire indispensable, pour parcourir une multitude de fichiers texte, de scripts et surtout de journaux pour des modèles spécifiques avec une facilité considérable. Vous pouvez rechercher un ou plusieurs modèles dans un seul fichier ou dans plusieurs fichiers, ou les utiliser pour filtrer les lignes de ces fichiers contenant ces modèles.

Vous pouvez même utiliser des tuyaux pour des recherche et filtrage à l'aide de grep. Cela vaut bien le temps d'en savoir plus sur cette excellente commande, en particulier sur certaines de ses fonctionnalités avancées.


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser Telnet sous Windows

  3. Comment utiliser la commande Grep pour rechercher du texte dans des fichiers

  4. Comment utiliser la commande Su sous Linux

  5. Comment faire en sorte que la commande grep renvoie toute la ligne correspondante

Comment utiliser la commande grep sur Debian 10

Comment utiliser la commande sysctl sous Linux

COMMENT UTILISER TAIL COMMAND

Comment utiliser la commande PS

Comment utiliser la commande TOP

Comment utiliser grep sous Linux