Qu’est-ce que Grep
Grep, abréviation de « global regular expression print », est une commande utilisée pour rechercher et faire correspondre des motifs de texte dans des fichiers contenant des expressions régulières. De plus, la commande est préinstallée dans chaque distribution Linux. Dans ce guide, nous examinerons les utilisations les plus courantes de la commande grep, ainsi que les cas d’utilisation populaires.
Commande Grep sous Linux
La commande Grep peut être utilisée pour trouver ou rechercher une expression régulière ou une chaîne de caractères dans un fichier texte. Pour illustrer cela, créons un fichier texte welcome.txt et ajoutons-y un contenu comme indiqué.
Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.
Génial ! Maintenant, nous sommes prêts à effectuer quelques commandes grep et à manipuler la sortie pour obtenir les résultats souhaités. Pour rechercher une chaîne de caractères dans un fichier, exécutez la commande ci-dessous Syntaxe
$ grep "string" file name
OU
$ filename grep "string"
Exemple:
$ grep "Linux" welcome.txt
Sortie Comme vous pouvez le voir, grep a non seulement recherché et fait correspondre la chaîne « Linux », mais a également imprimé les lignes dans lesquelles la chaîne apparaît. Si le fichier est situé dans un chemin différent, assurez-vous de spécifier le chemin d’accès au fichier comme indiqué ci-dessous
$ grep "string" /path/to/file
Coloriser les résultats Grep en utilisant l’option –color
Si vous travaillez sur un système qui n’affiche pas la chaîne de recherche ou le motif dans une couleur différente du reste du texte, utilisez l’option --color
pour faire ressortir vos résultats. Exemple
$ grep --color "free and opensource" welcome.txt
Sortie
Recherche d’une chaîne de manière récursive dans tous les répertoires
Si vous souhaitez rechercher une chaîne dans votre répertoire actuel et tous les autres sous-répertoires, effectuez une recherche en utilisant le drapeau - r
comme indiqué
$ grep -r "string-name" *
Par exemple
$ grep -r "linux" *
Sortie
Ignorer la sensibilité à la casse
Dans l’exemple ci-dessus, nos résultats de recherche nous ont donné ce que nous voulions car la chaîne « Linux » était spécifiée en majuscules et existe également dans le fichier en majuscules. Maintenant, essayons de rechercher la chaîne en minuscules.
$ grep "linux" file name
Rien ne s’affiche en sortie, n’est-ce pas ? C’est parce que le grepping n’a pas pu trouver et faire correspondre la chaîne « linux » puisque la première lettre est en minuscule. Pour ignorer la sensibilité à la casse, utilisez le drapeau -i
et exécutez la commande ci-dessous
$ grep -i "linux" welcome.txt
Résultat Génial, n’est-ce pas ? Le
- i
est normalement utilisé pour afficher les chaînes indépendamment de leur sensibilité à la casse.
Compter les lignes où les chaînes sont assorties avec l’option -c
Pour compter le nombre total de lignes où le motif de chaîne apparaît ou réside, exécutez la commande ci-dessous
$ grep -c "Linux" welcome.txt
Résultat
Utilisation de Grep pour inverser la sortie
Pour inverser la sortie de Grep, utilisez l’option -v
. L’option -v
indique à grep d’imprimer toutes les lignes qui ne contiennent pas ou ne correspondent pas à l’expression. L’option -v dit à grep d’inverser sa sortie, c’est-à-dire qu’au lieu d’imprimer les lignes correspondantes, il faut faire l’inverse et imprimer toutes les lignes qui ne correspondent pas à l’expression. Revenons à notre fichier, affichons les numéros de ligne comme indiqué. Appuyez sur ESC dans l’éditeur Vim, tapez deux-points suivi de
set nu
, puis appuyez sur Entrée Sortie Maintenant, pour afficher les lignes qui ne contiennent pas la chaîne « Linux », exécutez
$ grep -v "Linux" welcome.txt
Sortie Comme vous pouvez le voir, grep a affiché les lignes qui ne contiennent pas le motif de recherche.
Numérotez les lignes contenant le motif de recherche avec l’option -n
Pour numéroter les lignes où le motif de la chaîne est trouvé, utilisez l’option -n
comme indiqué
$ grep -n "Linux" welcome.txt
Sortie
Recherchez un mot correspondant exactement en utilisant l’option -w
Passer ensuite le drapeau -w
recherchera la ligne contenant le mot correspondant exactement comme indiqué
$ grep -w "opensource" welcome.txt
Sortie Cependant, si vous essayez
$ grep -w "open" welcome.txt
AUCUN résultat ne sera retourné car nous ne recherchons pas un motif mais un mot exact !
Utilisation des tuyaux avec grep
La commande grep peut être utilisée conjointement avec des tuyaux pour obtenir une sortie distincte. Par exemple, si vous voulez savoir si un certain paquet est installé dans le système Ubuntu, exécutez
$ dpkg -L | grep "package-name"
Par exemple, pour savoir si OpenSSH a été installé dans votre système, envoyez la commande dpkg -l
à grep comme indiqué
$ dpkg -L | grep -i "openssh"
Sortie
Affichage du nombre de lignes avant ou après un motif de recherche en utilisant des tuyaux
Vous pouvez utiliser les options -A ou -B pour afficher le nombre de lignes qui précèdent ou qui suivent la chaîne de recherche. Le drapeau -A indique les lignes qui suivent la chaîne de recherche et le drapeau -B imprime la sortie qui apparaît avant la chaîne de recherche. Par exemple
$ ifconfig | grep -A 4 ens3
Cette commande affiche la ligne contenant la chaîne plus 4 lignes de texte après la chaîne ens dans la commande ifconfig
. Sortie Au contraire, dans l’exemple ci-dessous, l’utilisation du drapeau -B affichera la ligne contenant la chaîne de recherche plus 3 lignes de texte avant la chaîne ether dans la commande
ifconfig
. Sortie
$ ifconfig | grep -B 4 ether
Utilisation de grep avec REGEX – expressions régulières
Le terme REGEX est un acronyme pour REGular EXpression. Un REGEX est une séquence de caractères qui est utilisée pour correspondre à un motif. Voici quelques exemples :
^ Matches characters at the beginning of a line
$ Matches characters at the end of a line
"." Matches any character
[a-z] Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets
Exemple Pour imprimer les lignes commençant par un certain caractère, la syntaxe est la suivante;
grep ^character file_name
Par exemple, pour afficher les lignes qui commencent par la lettre « d » dans notre fichier welcome.txt, nous exécuterions
$ grep ^d welcome.txt
Sortie Pour afficher les lignes se terminant par la lettre ‘x’, exécutez
$ grep x$ welcome.txt
Sortie
Obtenir de l’aide avec plus d’options Grep
Si vous avez besoin d’en savoir plus sur l’utilisation de la commande Grep, exécutez la commande ci-dessous pour obtenir un aperçu des autres drapeaux ou options que vous pouvez utiliser avec la commande.
$ grep --help
Exemple de sortie Nous apprécions le temps que vous avez consacré à parcourir ce tutoriel. N’hésitez pas à essayer les commandes et à nous faire part de vos commentaires.
Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix