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!