10 exemples pratiques de la commande Linux Grep
La commande grep permet d'accéder à l'utilitaire grep, un puissant outil de traitement de fichiers utilisé pour rechercher des modèles dans des fichiers texte. Il a de nombreux cas d'utilisation pratiques et est certainement l'une des commandes Linux les plus utilisées. Ce guide illustre quelques commandes grep Linux simples mais utiles qui ont des utilisations dans le monde réel.
Exemple de fichier pour la démonstration
Nous avons créé un fichier de référence pour aider les lecteurs à mieux comprendre grep. Vous pouvez créer une copie de ce fichier en exécutant la commande shell suivante dans votre terminal.
cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END
1. Rechercher du texte dans des fichiers
Pour rechercher un modèle de texte dans un fichier, exécutez simplement grep suivi du nom du modèle. Spécifiez également le nom du fichier contenant le texte.
grep "email" test-file
Cette commande affichera la ligne dans notre fichier de test qui contient le mot email . Vous pouvez également rechercher le même texte dans plusieurs fichiers à l'aide de grep.
grep "example" /usr/share/dict/american-english /usr/share/dict/british-english
La commande ci-dessus affiche toutes les instances du mot exemple dans les fichiers de dictionnaire américain-anglais et britannique-anglais .
2. Rechercher des mots correspondants exacts
La commande Linux grep illustrée dans l'exemple précédent répertorie également les lignes avec des correspondances partielles. Utilisez la commande ci-dessous si vous n'avez besoin que des occurrences exactes d'un mot.
grep -w "string" test-file
L'option -w ou –word-regexp de grep limite la sortie aux correspondances exactes uniquement. Grep se compose de quelques indicateurs supplémentaires qui peuvent également être utilisés avec la commande par défaut.
3. Ignorer les distinctions de cas
Par défaut, grep recherche les modèles en respectant la casse. Cependant, vous pouvez désactiver cette option si vous ne savez pas dans quel cas se trouve le modèle à l'avance.
grep -i "this" test-file
Utilisez l'option -i ou –ignore-case pour désactiver la sensibilité à la casse.
4. Comptez le nombre de motifs
L'indicateur -c signifie count . Il affiche le nombre de correspondances trouvées pour un modèle particulier. Les administrateurs peuvent l'utiliser pour récupérer des informations spécifiques sur le système.
Vous pouvez diriger la commande ps avec grep pour compter les processus appartenant à l'utilisateur actuel.
ps -ef | grep -c $USER
La commande suivante affiche le nombre de fichiers MP3 présents dans un répertoire.
ls ~/Music | grep -c .mp3
5. Afficher les numéros de ligne contenant des correspondances
Vous souhaiterez peut-être rechercher les numéros de ligne contenant une certaine correspondance. Utilisez l'option -n ou –line-number de grep pour y parvenir.
cat /etc/passwd | grep -n rubaiat
Cette option est particulièrement utile pour le débogage des codes sources et le dépannage des fichiers journaux. Pour afficher tous les numéros de lignes dans le ~ / .vimrc qui sont utilisés pour configurer l'éditeur de texte Vim :
grep -n "set" ~/.vimrc
6. Rechercher des noms de fichiers à l'aide d'extensions
Pour obtenir une liste de tous les fichiers MP3 présents dans le répertoire ~ / Music :
ls ~/Music/ | grep ".mp3"
Vous pouvez remplacer .mp3 par toute autre extension pour localiser des fichiers spécifiques. La commande suivante répertorie tous les fichiers php présents dans le répertoire de travail actuel.
ls | grep ".php"
7. Rechercher des modèles dans des fichiers compressés
La commande Linux grep peut également trouver des modèles dans des fichiers compressés. Vous devrez cependant utiliser la commande zgrep pour ce faire. Tout d'abord, créez une archive compressée de notre fichier de test en tapant:
gzip test-file
Maintenant, vous pouvez rechercher du texte ou d'autres modèles dans l'archive résultante.
zgrep email test-file.gz
8. Rechercher des adresses e-mail
Les administrateurs peuvent également répertorier les adresses e-mail à partir de fichiers texte à l'aide de la commande Linux grep. L'exemple suivant effectue cela en recherchant un modèle d'expression régulière.
grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file
Vous pouvez trouver des expressions régulières pour effectuer des tâches similaires ou vous pouvez les créer vous-même si vous savez comment elles fonctionnent.
9. Rechercher des numéros de téléphone à l'aide de Grep
Vous pouvez utiliser des expressions régulières grep pour filtrer les numéros de téléphone d'un fichier texte. Notez que vous devrez modifier le modèle pour qu'il corresponde au type de numéros de téléphone dont vous avez besoin.
grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file
La commande susmentionnée filtre les numéros de téléphone américains à dix chiffres.
10. Rechercher des URL à partir de fichiers sources
Nous pouvons tirer parti de la puissance de grep pour répertorier les URL trouvées dans les fichiers texte. La commande ci-dessous imprime toutes les URL présentes dans le fichier de test .
grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
Nous utilisons à nouveau l'option -E pour les expressions régulières étendues. Vous pouvez également utiliser la commande egrep pour éviter d'ajouter cela.
egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
Maîtriser la commande Linux Grep
Nous avons présenté plusieurs exemples utiles de la commande Linux grep pour résoudre les problèmes du monde réel. Bien que ces exemples illustrent la puissance de grep pour le traitement de texte, vous devrez maîtriser les expressions régulières si vous voulez être super productif avec grep.
Parfois, les utilisateurs Linux se heurtent à certaines situations où ils ne peuvent pas se souvenir des différentes options liées à une commande. Espérons que le système d'exploitation Linux vous offre des moyens d'obtenir une aide en ligne de commande pour presque tous les utilitaires système.