Utilisation de la commande grep

Le rôle de la commande grep est de rechercher une chaîne de caractères dans un ou plusieurs fichiers textes et d’afficher à l’écran les lignes contenant cette chaîne. L’avantage de cette commande est qu’elle peut être utilisée de manière très simple ou plus complexe en faisant appel aux expressions régulières.

Les options sont les suivantes (extrait du –help plus bas) :

  • -v affiche les lignes ne contenant pas la chaîne
  • -c compte le nombre de lignes contenant la chaîne
  • -n chaque ligne contenant la chaîne est numérotée
  • -x ligne correspondant exactement à la chaîne
  • -r permet de rechercher de façon récursive
  • –color permet de faire ressortir le terme recherché en couleur
  • -l affiche le nom des fichiers qui contiennent la chaîne
  • -i permet de ne pas tenir compte de la casse (majuscules / minuscules)

Rechercher une expression dans un fichier

Si l’on veut chercher le mot « texte » dans le fichier « monFichier », il vous faudra exécuter la commande suivante :

grep texte monFichier

Il sera nécessaire de mettre des guillemets autour de l’expression si celle-ci est composée de plusieurs mots séparés.

grep "tex te" mon Fichier

Rechercher une expression dans un répertoire

grep texte monDossier/

Une recherche peut aussi s’appliquer récursivement avec le -r

grep -r texte monDossier/*

Utiliser grep derrière un pipe

On peut utiliser grep derrière un pipe pour rechercher un processus particulier lors de l’utilisation de la commande ps. Ici, nous allons chercher les processus de openvpn.

ps -aux | grep openvpn

Pour que la commande grep n’apparaisse pas, il vous faudra utiliser 2 pipe pour demander à grep de ne pas afficher grep.

 ps -aux | grep openvpn | grep -v grep

Rechercher une expression régulière (REGEX)

Les expressions régulières sont des formules qui représentent des chaînes de caractères. On cherche alors non pas un mot précis, mais des suites de caractères décrivant un ensemble de chaînes de caractères.

Tout d’abord, il faut savoir qu’on doit utiliser l’option -E pour faire comprendre à grep que l’on utilise une expression régulière.

  • ^ début de ligne
  • . un caractère quelconque
  • $ fin de ligne
  • [ ] un des caractères entre les crochets
  • * L’élément précédent peut être présent 0, 1 ou plusieurs fois
  • + L’élément précédent doit être présent 1 ou plusieurs fois
  • ? L’élément précédent est optionnel (peut être présent 0 ou 1 fois)
  • | Ou
  • ( ) Groupement d’expressions
  • […] plage de caractères permis
  • [^…] plage de caractères interdits
  • \ {n\} pour définir le nombre de répétitions n du caractère placé devant

Afficher les lignes commençant par la lettre « A »

grep -E '^A' monFichier

Afficher les lignes qui se finissent par « t »

grep -E 't

Afficher les lignes commençant par un « bonjour » ou se terminant par un « revoir »

grep -E '^bonjour|revoir

Afficher et numéroter les lignes commençant par « a »

grep -En '^a' monFichier

Afficher les lignes contenant au moins 2 caractères.

grep -E '..' monFichier

Afficher toutes les lignes qui contiennent un caractère alphabétique compris entre « a » et « z » ou « A » et « Z »

grep -E [a-zA-Z] monFichier

Afficher toutes les lignes commençant par une majuscule

grep -E '^[A-Z]' monFichier

Afficher toutes les lignes qui contiennent un nombre compris entre 0 et 4

grep -E [0-4] monFichier

Afficher toutes les lignes ne finissant pas par un signe de ponctuation

grep -E '[^.,;:?!]

Afficher tous les mots contenant un «r» précédé de n’importe quelle lettre majuscule ou minuscule

grep -E '[a-zA-Z]r' monFichier

Afficher tous les mots dont la seconde lettre est un «r».

grep -E '\<.r' monFichier

Afficher les lignes ne contenant que des chiffres

grep -E '^[0-9]+

Ne pas interpréter le motif comme une expression régulière.

grep -F '..' monFichier

Utiliser un fichier pour rechercher les expressions régulières

Il faudra créer un fichier contenant les REGEX (nommé ici « maRecherche ») et l’utiliser comme ci-dessous :

grep -E -f maRecherche monFichier

Help grep

Utilisation : grep [OPTION]... MOTIF [FICHIER]...
Chercher un MOTIF dans chaque FICHIER ou à partir de l'entrée standard.
MOTIF est, par défaut, une expression rationnelle simple.
Exemple : grep -i 'Bonjour, le monde' menu.h main.c
Sélection et interprétation de l'expression rationnelle :
-E, --extended-regexp MOTIF est une expression rationnelle étendue
-F, --fixed-regexp chaînes fixes séparées par des changements de ligne
-G, --basic-regexp MOTIF est une expression rationnelle de base
-P, --perl-regexp MOTIF est une expression rationnelle en Perl
-e, --regexp=MOTIF utiliser MOTIF comme expression rationnelle
-f, --file=FICHIER charger le MOTIF depuis ce FICHIER
-i, --ignore-case ignorer la distinction de la casse
-w, --word-regexp forcer la correspondance du MOTIF en mots entiers
-x, --line-regexp forcer la correspondance du MOTIF en lignes entières
-z, --null-data finir les lignes de données par un octet nul

Divers :
-s, --no-messages supprimer les messages d'erreur
-v, --invert-match sélectionner les lignes sans correspondance
-V, --version afficher le nom et la version du logiciel
--help afficher l'aide et quitter

Contrôle de la sortie :
-m, --max-count=NOMBRE arrêter après NOMBRE correspondances
-b, --byte-offset afficher la position en octet avec la sortie
-n, --line-number afficher le numéro de ligne avec la sortie
--line-buffered vider le tampon après chaque ligne
-H, --with-filename afficher le nom de fichier avec les correspondances
-h, --no-filename supprimer le préfixe de nom de fichier en sortie
--label=ÉTIQUETTE utiliser ÉTIQUETTE pour le préfixe d'entrée standard
-o, --only-matching n'afficher que la partie de ligne correspondante
-q, --quiet, --silent supprimer toute la sortie standard
--binary-files=TYPE considérer que les fichiers binaires sont de type
TYPE : « binary », « text » ou « without-match »
-a, --text identique à --binary-files=text
-I identique à --binary-files=without-match
-d, --directories=ACTION la façon de traiter les répertoires ;
ACTION est « read », « recurse » ou « skip »
-D, --devices=ACTION la façon de traiter les périphériques, les FIFOS
et les sockets ; ACTION est « read » ou « skip »
-r, --recursive identique à --directories=recurse
-R, --dereference-recursive similaire, mais avec suivi des liens symboliques
--include=MOTIF_FIC ne chercher que fichiers correspondants à MOTIF_FIC
--exclude=MOTIF_FIC ignorer fichiers et rép. correspondants à MOTIF_FIC
--exclude-from=FIC ignorer fichiers correspondants aux motifs de FIC
--exclude-dir=MOTIF ignorer les répertoires correspondants au MOTIF
-L, --files-without-match n'afficher que les fichiers sans correspondance
-l, --files-with-matches n'afficher que les fichiers avec correspondances
-c, --count n'afficher que le nombre de lignes correspondantes
-T, --initial-tab insérer des tabulations (si nécessaire)
-Z, --null afficher l'octet nul après le nom de fichier

Contrôle de contexte :
-B, --before-context=NBRE afficher NBRE lignes de contexte avant
-A, --after-context=NBRE afficher NBRE lignes de contexte après
-C, --context=NBRE afficher NBRE lignes de contexte en sortie
-NBRE identique à --context=NBRE
--color[=QUAND],
--colour[=QUAND] mettre en évidence les correspondances ; QUAND est
« always » (toujours) « never » (jamais) ou « auto »
-U, --binary ne pas enlever les retours chariot en fin de ligne
-u, --unix-byte-offsets afficher les positions sans tenir compte des retours
chariot (MS-DOS ou Windows)

http://www.linux-france.org/article/man-fr/man1/grep-1.html

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *