grep sélectionne les lignes d'entrée correspondant à un motif. Il recherche des fichiers ou stdin, affiche du contexte, compte des lignes et signale par son code de sortie si une correspondance existe.
Text-Fu · Leçon 16
grep
Apprenez à sélectionner des lignes avec des chaînes fixes ou des expressions régulières et à interpréter les résultats.
Rechercher des lignes dans un fichier
Fournissez un motif puis un ou plusieurs fichiers :
$ grep 'fox' sample.txt
GNU grep interprète par défaut le motif comme une expression régulière basique. Citez les motifs pour empêcher le shell d'interpréter d'abord leurs espaces ou métacaractères.
-F demande une chaîne fixe :
$ grep -F 'price: $5.00' products.txt
Quelle commande recherche littéralement price: $5.00 dans products.txt, sans syntaxe d'expression régulière ?
Choisir la syntaxe du motif
GNU grep propose trois modes courants : expressions régulières basiques par défaut, étendues avec -E, et chaînes fixes avec -F. Les ancres ^ et $ désignent le début et la fin d'une ligne.
$ grep -E '\.txt$' filenames.txt
La barre oblique inverse rend le point littéral ; un . non échappé correspond à n'importe quel caractère.
Quelle expression régulière étendue correspond aux lignes finissant littéralement par .txt ?
Fournir les motifs en sécurité
-e PATTERN fournit explicitement un motif, notamment lorsqu'il commence par - :
$ grep -e '-v' settings.conf
Les guillemets seuls n'empêchent pas l'analyse des options. Répétez -e pour plusieurs motifs, ou utilisez -f patterns.txt pour en lire un par ligne.
Quelle commande recherche le motif -v dans settings.conf au lieu de l'interpréter comme une option ?
Contrôler la sortie sélectionnée
-i: ignorer la casse.-n: préfixer les numéros de ligne.-v: sélectionner les lignes non correspondantes.-c: compter les lignes sélectionnées par fichier.-o: afficher uniquement chaque partie correspondante non vide.
$ grep -ic 'fox' sample.txt
-c compte des lignes, pas toutes les occurrences dans celles-ci. Pour compter des correspondances non superposées avec GNU grep, un pipeline possible est grep -o PATTERN | wc -l.
data.txt contient une ligne avec error error et deux sans correspondance. Que renvoie grep -c 'error' data.txt ?
Filtrer stdin et rechercher dans des répertoires
Sans fichier, grep lit stdin :
$ env | grep '^USER='
Utilisez -r pour parcourir récursivement les fichiers lisibles d'un répertoire :
$ grep -r 'listen_port' config/
-r recherche récursivement dans les fichiers lisibles. Les erreurs d'autorisation vont sur stderr et ne constituent pas une entrée de recherche. Ciblez le chemin et comprenez les droits avant d'élever les privilèges.
Dans generate-report | grep 'failed', quelle entrée grep recherche-t-il ?
Interpréter le code de sortie
Pour une recherche ordinaire, GNU grep renvoie 0 si au moins une ligne est sélectionnée, 1 si aucune ne l'est et 2 en cas d'erreur. Un script peut donc distinguer absence de résultat, fichier illisible et motif invalide.
-q supprime la sortie normale et s'arrête après la première correspondance. Ne déduisez pas le succès d'un écran vide : mode silencieux, redirection, absence de correspondance et erreur peuvent tous produire peu de stdout, mais leurs états diffèrent.
Pour vous exercer :
- Rechercher du texte avec grep sous Linux - Utilisez numéros de ligne, ancres et expressions régulières.
- Commande Linux grep : rechercher des motifs - Explorez la recherche et les motifs complexes.
- Une aiguille dans une botte de foin - Comptez et combinez des critères dans des journaux.
Leçon terminée
Vous avez terminé grep
Vous savez rechercher du texte ligne par ligne et distinguer les correspondances des erreurs.
Choisir entre motifs basiques, étendus ou fixes.
Citer les motifs et employer
-edevant un tiret.Compter les lignes sélectionnées sans les confondre avec les occurrences.
Filtrer stdin ou rechercher récursivement dans un chemin ciblé.
Interpréter les codes de correspondance, d'absence et d'erreur.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit