Grep
La commande grep en Linux est utilisée pour rechercher des chaînes de texte ou des motifs spécifiques dans des fichiers ou dans l'entrée standard.
C'est un outil puissant pour filtrer et extraire des informations d'un fichier en fonction de critères de recherche donnés.
Syntaxe de base
motif: Le motif de texte que vous souhaitez rechercher (peut être une chaîne de texte simple ou une expression régulière).fichier: Le fichier ou les fichiers dans lesquels vous souhaitez effectuer la recherche.
Exemples de base
Rechercher une chaîne de texte simple dans un fichier
grep "texte_a_rechercher" fichier.txtCette commande cherche toutes les lignes contenant
"texte_a_rechercher"dansfichier.txt.Rechercher un motif dans plusieurs fichiers
grep "erreur" *.logCherche toutes les lignes contenant
"erreur"dans tous les fichiers ayant l'extension.log.
Options utiles avec grep
-i: Recherche insensible à la cassegrep -i "erreur" fichier.txtCela permet de trouver les correspondances de
"erreur", peu importe la casse (Erreur,ERREUR, etc.).-v: Inverser la recherchegrep -v "erreur" fichier.txtCette option affiche toutes les lignes qui ne contiennent pas le motif
"erreur".-rou-R: Recherche récursivegrep -r "texte" /chemin/du/dossier-rpermet de rechercher le motif dans tous les fichiers d’un dossier et de ses sous-dossiers.-l: Afficher uniquement les noms de fichiers contenant le motifgrep -l "texte" *.txtCela affiche les noms des fichiers contenant
"texte"sans afficher les lignes correspondantes.-c: Compter le nombre de correspondances dans chaque fichiergrep -c "texte" fichier.txtAffiche le nombre de fois que
"texte"apparaît dansfichier.txt.-n: Afficher les numéros de lignegrep -n "texte" fichier.txtAffiche les lignes contenant
"texte"avec leurs numéros de ligne dansfichier.txt.-w: Correspondance de mots entiersgrep -w "texte" fichier.txtCherche
"texte"en tant que mot entier. Par exemple, il ne correspondra pas àtexte1ouletexte.-Aet-B: Afficher le contexte autour des correspondances-A(After) : Affiche les lignes après la correspondance.-B(Before) : Affiche les lignes avant la correspondance.
grep -A 2 -B 2 "texte" fichier.txtAffiche deux lignes avant et après chaque correspondance de
"texte".
Utilisation d'expressions régulières avec grep
grep est compatible avec les expressions régulières pour des recherches plus complexes. Par exemple :
Rechercher des lignes commençant par un motif:
grep "^motif" fichier.txtLe symbole
^signifie "début de ligne". Cela recherche toutes les lignes commençant par"motif".Rechercher des lignes se terminant par un motif:
grep "motif$" fichier.txtLe symbole
$signifie "fin de ligne". Cela recherche toutes les lignes se terminant par"motif".Rechercher des motifs avec des caractères spéciaux:
grep "[0-9]" fichier.txtCela trouve toutes les lignes contenant un chiffre (
0à9).Rechercher avec l'option
-Epour activer les expressions régulières étendues:grep -E "motif1|motif2" fichier.txtCette commande recherche
"motif1"ou"motif2"dansfichier.txt. Le|fonctionne comme un "OU" logique.
Exemples pratiques
Trouver toutes les lignes qui contiennent des adresses IP:
grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" fichier.logTrouver toutes les lignes vides dans un fichier:
grep "^$" fichier.txtRechercher des lignes contenant le mot "Erreur" et afficher le numéro de ligne:
grep -n "Erreur" fichier.log