Syntaxe Grep la plus courante

Syntaxe Grep la plus courante
En linux, grep est l'un des nombreux outils qui viennent préinstallés. C'est en fait un acronyme qui signifie «Impression d'expression régulière mondiale." Le grep La commande peut rechercher une chaîne dans des fichiers décrits par expression régulière. Si une correspondance est trouvée, grep imprime le résultat dans la console.

Dans ce guide, nous examinerons rapidement certaines des implémentations les plus courantes de la grep commande.

Le grep structure de commandement

Toute commande grep aura les composants suivants.

$ grep

Commun grep syntaxes

Recherche d'une chaîne dans un fichier

C'est le moyen le plus simple d'utiliser le grep commande. Dans l'exemple suivant, grep Recherchera le terme «DKMS» (sans devis) dans le fichier apt-packages.SMS (contenant tous les packages APT installés dans le système).

$ grep "dkms" apt-packages a été installé.SMS

Il est recommandé d'utiliser des doubles citations («») pour indiquer une chaîne car une chaîne peut contenir des caractères et des espaces blancs spéciaux.

Recherche d'une chaîne dans plusieurs fichiers

Le grep La commande peut également effectuer les recherches sur plusieurs fichiers. Tout ce que vous avez à faire est de spécifier les fichiers séquentiellement.

$ grep "dkms" apt-packages-installé-1.txt apt-packages-installé-2.SMS

Au lieu de spécifier manuellement les fichiers, vous pouvez également utiliser l'expression de la joker (*).

$ grep "dkms" apt-packages-astalled- *.SMS

Et si nous voulions effectuer la recherche sur tous les fichiers du répertoire actuel? Définissez simplement l'expression du joker pour indiquer chaque fichier dans le répertoire actuel.

$ grep "dkms" *

Comme on peut le voir, grep J'ai trouvé toutes les correspondances dans les fichiers texte mais n'ont pas bien géré les répertoires. Cela mène parfaitement au point suivant.

Recherche de sous-répertoires

Par défaut, grep ne recherchera pas les sous-répertoires des matchs. Si vous voulez Grep pour le faire, vous devez le dire en ajoutant le drapeau «-r."

Essayez de effectuer à nouveau la recherche précédente avec cette nouvelle astuce.

$ grep -r "dkms" *

Notez que compte tenu des couches de sous-répertoires et du nombre de fichiers à parcourir, grep peut prendre un peu de temps. À l'écran, il apparaîtra comme s'il était gelé. Alors, ne paniquez pas si vous faites face à des situations similaires.

Vérification du numéro de ligne du match

Avoir le numéro de ligne du grep Le match peut être une aubaine. Pour voir le numéro de ligne du match, utilisez le drapeau «-N."

$ grep -n "dkms" *.SMS

Compter le nombre de matchs

Le grep La commande peut compter le nombre de correspondances dans le résultat de la recherche. Pour ce faire, utilisez le drapeau «-l."

$ grep -c "dkms" *.SMS

Ici, grep affichera le nombre de matchs pour chaque fichier recherché.

Nom d'impression des fichiers correspondants

Parfois, vous voulez savoir quels fichiers correspondaient au modèle spécifié sans le résultat de la recherche. Si tel est le cas, utilisez le drapeau «-l."

$ grep -l "dkms" *.SMS

Imprimer les lignes avant et après la chaîne correspondante

Par défaut, grep Imprimera la ligne Il trouve la chaîne spécifiée. Cependant, nous pouvons calibrer la sortie pour imprimer quelques lignes avant et / ou après la correspondance de chaîne.

Grep imprimera la chaîne correspondante avec 5 lignes précédentes sur la console dans la commande suivante, grâce au drapeau «-b».

$ grep -b 5 "dkms" apt-packages-installé-1.SMS

De même, nous pouvons également dire à Grep d'imprimer plusieurs lignes après avoir trouvé la chaîne correspondante. Pour ce faire, nous utiliserons le drapeau «-a."Dans l'exemple suivant, grep Imprimera 5 lignes après avoir trouvé le match.

$ grep -a 5 "dkms" apt-packages-installé-1.SMS

Maintenant, il est temps de combiner ces deux fonctionnalités.

$ grep -a 5 -b 5 "dkms" apt-packages-installé-1.SMS

La commande devient inutilement déroutante de cette manière. Nous pouvons dire à Grep d'imprimer plusieurs avant et après le match pour résoudre ceci. Pour ce faire, nous utiliserons le drapeau «-c."

$ grep -c 5 "dkms" apt-packages-installé-1.SMS

Notez que la sortie sera symétrique autour de la chaîne correspondante si vous utilisez l'indicateur "-c". Si vous voulez un nombre asymétrique de lignes, vous devez les décrire séparément en utilisant les drapeaux «-a» et «-b».

Limitatif grep sortir

Si vous travaillez avec un grand fichier texte qui contient de nombreuses instances du modèle de recherche, alors le grep La sortie imprimera un gros morceau de sortie avec beaucoup de gâchis. Par exemple,

$ grep "installé" apt-packages-installé-1.SMS

Nous pouvons dire à Grep de limiter le nombre de lignes qu'il est autorisé à produire dans une telle situation. Pour ce faire, nous utiliserons le drapeau «-m.«La commande ressemblera à ceci:

$ grep -m 10 "installé" apt-packages-installé-1.SMS

Ici, grep Imprimera uniquement les 10 premiers des modèles de correspondance.

En utilisant grep avec Stdout

Le stdout est un flux de fichiers. C'est une caractéristique puissante de coquilles (comme bash). C'est un fichier temporaire qui contient la sortie de la commande précédente. Lorsque la commande suivante est exécutée, la valeur de Stdout Est mis à jour. En savoir plus sur Stdin, Stderr, et Stdout bas.

La commande grep peut également fonctionner avec Stdout contenu. Par exemple, vous pouvez tuer la sortie d'une commande pour grep travailler sur.

Dans l'exemple suivant, la commande APT renvoie la liste de tous les packages installés dans le système. Nous tumons la sortie à grep et rechercher le terme «dkms» dans la sortie. Selon grepLe comportement par défaut, il imprimera toutes les lignes qui contiennent la chaîne.

$ APT LISTE - INSTALLÉ | grep "dkms"

La sortie peut avertir que l'utilisation de l'APT dans les scripts n'est pas recommandée car APT n'offre pas une interface CLI stable. En savoir plus sur le gestionnaire de packages APT sur Ubuntu.

Dernières pensées

Ceci est un bref guide sur certains des usages les plus courants de la grep commande. Pour la maîtrise grep, Il est recommandé de consulter ce Mega Guide présentant 30 exemples Grep.

La page d'aide de grep Imprime une courte page de toutes les options disponibles.

$ grep - help

La page de l'homme de grep Contient toutes les options avec des explications détaillées.

$ man grep

Pour les débutants, ce guide sur grep La commande dans Linux est un excellent point de départ.

Happy Computing!