GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Grep sous Linux/UNIX

Dans les systèmes Linux et Unix, Grep, abréviation de « global regular expression print », est une commande utilisée pour rechercher et faire correspondre les fichiers texte contenus dans les expressions régulières. De plus, la commande est préinstallée dans chaque distribution Linux. Dans ce guide, nous examinerons l'utilisation de la commande grep commune avec quelques exemples.

Commande Grep sous Linux

La commande Grep peut être utilisée pour trouver ou rechercher une expression régulière ou une chaîne dans un fichier texte. Pour le démontrer, créons un fichier texte welcome.txt et ajoutez du 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.

Super! Nous sommes maintenant prêts à exécuter quelques commandes grep et à manipuler la sortie pour obtenir les résultats souhaités.

Pour rechercher une chaîne 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 mis en correspondance la chaîne "Linux", mais a également imprimé les lignes dans lesquelles la chaîne apparaît.

Si le fichier se trouve dans un chemin de fichier différent, assurez-vous de spécifier le chemin du fichier comme indiqué ci-dessous

$ grep "string" /path/to/file

Colorisation des résultats de Grep à l'aide de l'option –color

Si vous travaillez sur un système qui n'affiche pas la chaîne ou le motif de recherche dans une couleur différente du reste du texte, utilisez le --color pour faire ressortir vos résultats.

Exemple

$ grep --color "free and opensource" welcome.txt 

Sortie

Rechercher 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, recherchez en utilisant le - r drapeau 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 majuscule et existe également dans le fichier en majuscule. Essayons maintenant de rechercher la chaîne en minuscules.

$ grep "linux" file name

Rien de la sortie, non? C'est parce que 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 -i drapeau et exécutez la commande ci-dessous

$ grep -i "linux" welcome.txt

Sortie

Génial n'est-ce pas ? Le - i est normalement utilisé pour afficher des chaînes indépendamment de leur sensibilité à la casse.

Compter les lignes où les chaînes correspondent à l'option -c

Pour compter le nombre total de lignes où le modèle de chaîne apparaît ou réside, exécutez la commande ci-dessous

$ grep -c "Linux" welcome.txt

Sortie

Utiliser Grep pour inverser la sortie

Pour inverser la sortie Grep, utilisez le -v drapeau. Le -v L'option demande à grep d'imprimer toutes les lignes qui ne contiennent pas ou ne correspondent pas à l'expression.

L'option –v indique à grep d'inverser sa sortie, ce qui signifie qu'au lieu d'imprimer les lignes correspondantes, faites le contraire et imprimez toutes les lignes qui ne correspondent pas à l'expression. Pour en revenir à notre fichier, affichons les numéros de ligne comme indiqué.

Appuyez sur ESC dans l'éditeur Vim, tapez deux-points complets suivis de

 set nu

Ensuite, 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 qui contiennent le motif de recherche avec l'option -n

Pour numéroter les lignes où le modèle de chaîne correspond, utilisez le -n comme indiqué

$ grep -n "Linux" welcome.txt

Sortie

Rechercher le mot correspondant exact à l'aide de l'option -w

En passant puis -w flag recherchera la ligne contenant le mot correspondant exact comme indiqué

$ grep -w "opensource" welcome.txt

Sortie

Cependant, si vous essayez

$ grep -w "open" welcome.txt

AUCUN résultat ne sera renvoyé car nous ne recherchons pas un motif mais un mot exact !

Utiliser des tubes avec grep

La commande grep peut être utilisée avec des canaux 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 tube système, le dpkg -l commande pour grep comme indiqué

$ dpkg -L | grep -i "openssh"

Sortie

Affichage du nombre de lignes avant ou après un motif de recherche à l'aide de tubes

Vous pouvez utiliser le -A ou -B pour afficher le nombre de lignes qui précèdent ou viennent après la chaîne de recherche. Le -A flag désigne les lignes qui viennent après la chaîne de recherche et -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 le ens chaîne dans le ifconfig commande.

Sortie

Inversement, 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 l'éther chaîne dans le ifconfig commande.

Sortie

$ ifconfig | grep -B 4 ether

Utiliser grep avec des expressions régulières (REGEX)

Le terme REGEX est un acronyme pour REG ulaire EX pression. Une REGEX est une séquence de caractères utilisée pour correspondre à un modèle. 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 des lignes commençant par un certain caractère, la syntaxe est ;

grep ^character file_name

Par exemple, pour afficher les lignes qui commencent par la lettre "d" dans notre fichier welcome.txt, nous exécutons

$ grep ^d welcome.txt 

Sortie

Pour afficher les lignes qui se terminent 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 indicateurs ou options que vous pouvez utiliser avec la commande.

$ grep --help

Exemple de sortie

Nous apprécions votre temps pour parcourir ce tutoriel. N'hésitez pas à essayer les commandes et faites-nous savoir comment cela s'est passé.


Linux
  1. Commande grep Linux

  2. Commande Linux mv

  3. Linux du command

  4. Commande IP Linux

  5. Commande cd Linux

Linux contre Unix

Commande ls sous Linux/UNIX

commande cp sous Linux/UNIX

Rechercher la commande sous Linux/UNIX

Utilisation de la commande grep sous Linux

15 exemples pratiques de commande Grep sous Linux / UNIX