Il existe 3 formes différentes de la fameuse commande grep. La liste ci-dessous fait également la distinction entre leurs cas d'utilisation.
- fgrep :Effectue une recherche rapide de motifs simples. Utilisez cette commande pour localiser rapidement des modèles sans aucun caractère générique, utile lors de la recherche d'un mot ordinaire.
- grep :Recherches de modèles à l'aide d'expressions régulières ordinaires.
- egrep :Recherches de modèles à l'aide d'expressions régulières étendues plus puissantes.
fgrep (fast grep) recherche dans un ou plusieurs fichiers les lignes correspondant à la chaîne de texte spécifiée. Le statut de sortie est 0 si des lignes correspondent, 1 sinon et 2 pour les erreurs. fgrep est plus rapide que les recherches grep normales mais moins flexible :il ne peut trouver que du texte fixe, pas des expressions régulières.
La commande fgrep est comme grep, mais au lieu d'accepter une expression régulière, elle accepte une liste de chaînes fixes, séparées par des retours à la ligne. C'est la même chose que grep -F. Par exemple, si vous avez un fichier dictionnaire rempli de chaînes, une par ligne :
# cat my_dictionary_file aardvark aback abandon ...
vous pouvez facilement rechercher ces chaînes dans un ensemble de fichiers d'entrée :
# fgrep -f my_dictionary_file inputfile1 inputfile2
Normalement, vous utiliserez l'option -f minuscule pour que fgrep lise les chaînes fixes d'un fichier. Vous pouvez également lire les chaînes fixes sur la ligne de commande en utilisant des guillemets, mais c'est un peu plus délicat. Pour rechercher les chaînes un, deux et trois dans un fichier, vous devez taper :
# fgrep 'one ### Note we are typing newline characters two three' myfile
fgrep est pratique lors de la recherche de caractères non alphanumériques tels que * et { car ils sont pris littéralement, et non comme des caractères d'expression régulière.
Exemples de commande fgrep
1. Pour interpréter PATTERN comme une expression régulière étendue :
# fgrep --extended-regexp PATTERN # fgrep -E PATTERN
2. Pour interpréter PATTERN comme une liste de chaînes fixes :
# fgrep -F PATTERN # fgrep --fixed-strings PATTERN
3. Pour interpréter PATTERN comme une expression régulière de base :
# fgrep -G PATTERN # fgrep --basic-regexp PATTERN
4. Pour interpréter PATTERN comme une expression régulière Perl :
# fgrep -P PATTERN # fgrep --perl-regexp PATTERN
5. Pour utiliser PATTERN comme motif :
# fgrep -e PATTERN, # fgrep --regexp=PATTERN
6. Pour obtenir des modèles à partir de FILE, un par ligne :
# fgrep -f FILE, --file=FILE
7. Pour ignorer les distinctions de casse dans le PATTERN et les fichiers d'entrée :
# fgrep -i PATTERN # fgrep --ignore-case PATTERN
8. Pour inverser le sens de correspondance, pour sélectionner les lignes non correspondantes :
# fgrep -v PATTERN # fgrep --invert-match PATTERN
9. Pour sélectionner uniquement les lignes contenant des correspondances qui forment des mots entiers :
# fgrep -w PATTERN # fgrep --word-regexp PATTERN
10. Pour sélectionner uniquement les correspondances qui correspondent exactement à toute la ligne :
# fgrep -x PATTERN # fgrep --line-regexp PATTERN
11. Pour ignorer la casse :
# fgrep -y PATTERN
12. Pour supprimer la sortie normale ; à la place, imprimez le nombre de lignes correspondantes :
# fgrep -c PATTERN # fgrep --count PATTERN
13. Pour afficher en couleur :
# fgrep --color PATTERN
14. Pour supprimer la sortie normale ; à la place, imprimez le nom de chaque fichier d'entrée, de out ne sera pas attendu :
# fgrep -L PATTERN # fgrep --files-without-match PATTERN
15. Pour supprimer la sortie normale ; à la place, imprimez le nom de chaque fichier d'entrée à partir duquel la sortie a été imprimée :
# fgrep -l PATTERN # fgrep --files-with-matches PATTERN
16. Au calme ; ne rien écrire sur la sortie standard Sortir immédiatement avec un statut zéro si une correspondance est trouvée :
# fgrep -q PATTERN # fgrep --quiet PATTERN # fgrep --silent PATTERN
17. Pour arrêter la lecture d'un fichier après NUM lignes correspondantes :
# fgrep -m NUM PATTERN # fgrep --max-count=NUM PATTERN
18. Pour imprimer uniquement les parties correspondantes (non vides) d'une ligne correspondante :
# fgrep -o PATTERN # fgrep --only-matching PATTERN
19. Pour supprimer les messages d'erreur concernant des fichiers inexistants ou illisibles :
# fgrep -s PATTERN # fgrep --no-messages PATTERN
20. Pour imprimer le décalage d'octet de base 0 dans le fichier d'entrée avant chaque ligne de sortie :
# fgrep -b PATTERN # fgrep --byte-offset PATTERN
21. Pour imprimer le nom du fichier pour chaque match :
# fgrep -H PATTERN # fgrep --with-filename PATTERN
22. Pour supprimer le préfixe des noms de fichiers en sortie :
# fgrep -h PATTERN # fgrep --no-filename PATTERN
23. Pour afficher l'entrée provenant réellement de l'entrée standard comme entrée provenant du fichier LABEL :
# fgrep -cd PATTERN | fgrep --label=mysearch -H PATTERN
24. Pour préfixer chaque ligne de sortie avec le numéro de ligne basé sur 1 dans son fichier d'entrée :
# fgrep -n PATTERN # fgrep --line-number PATTERN
25. Pour vous assurer que le premier caractère du contenu réel de la ligne se trouve sur un taquet de tabulation :
# fgrep -T PATTERN # fgrep --initial-tab PATTERN
26. Pour signaler les décalages d'octets de style Unix :
# fgrep -u PATTERN # fgrep --unix-byte-offsets PATTERN
27. Pour sortir un octet zéro au lieu du caractère qui suit normalement un nom de fichier :
# fgrep -Z PATTERN # fgrep --null PATTERN
28. Pour imprimer NUM lignes de contexte de fin après les lignes correspondantes :
# fgrep -A NUM PATTERN # fgrep --after-context=NUM PATTERN
29. Pour imprimer NUM lignes de contexte principal avant les lignes correspondantes :
# fgrep -B NUM PATTERN # fgrep --before-context=NUM PATTERN
30. Pour imprimer NUM lignes de contexte de sortie :
# fgrep -C NUM PATTERN # fgrep --context=NUM PATTERN
31. Pour traiter un fichier binaire comme s'il s'agissait de texte :
# fgrep -a PATTERN /tmp/bin # fgrep -text PATTERN /tmp/bin
32. Pour supposer que le fichier est de type TYPE :
# fgrep --binary-files=TYPE PATTERN
33. Pour Si un fichier d'entrée est un périphérique, FIFO ou socket, utilisez ACTION pour le traiter :
# fgrep -D ACTION PATTERN # fgrep --devices=ACTION PATTERN
34. Pour Si un fichier d'entrée est un répertoire, utilisez ACTION pour le traiter :
# fgrep -d ACTION PATTERN # fgrep --directories=ACTION PATTERN
35. Pour ignorer les fichiers dont le nom de base correspond à GLOB :
# fgrep --exclude=GLOB PATTERN
36. Pour ignorer les fichiers dont le nom de base correspond à l'un des globs de nom de fichier lus à partir de FILE :
# fgrep --exclude-from=FILE PATTERN
37. Pour exclure les répertoires correspondant au modèle DIR des recherches récursives :
# fgrep --exclude-dir=DIR PATTERN
38. Pour traiter un fichier binaire comme s'il ne contenait pas de données correspondantes :
# fgrep -I PATTERN
39. Pour rechercher uniquement les fichiers dont le nom de base correspond à GLOB :
# fgrep --include=GLOB
40. Pour lire tous les fichiers sous chaque répertoire, de manière récursive :
# fgrep -r PATTERN # fgrep -R PATTERN
41. Pour utiliser la mise en mémoire tampon de ligne sur la sortie :
# fgrep --line-buffered PATTERN
42. Si possible, utilisez l'appel système mmap pour lire l'entrée, au lieu de la lecture par défaut :
# fgrep --mmap PATTERN
43. Pour traiter le(s) fichier(s) comme binaire :
# fgrep -U /tmp/file PATTERN # fgrep --binary /tmp/file PATTERN
44. Pour traiter l'entrée comme un ensemble de lignes :
# fgrep -z PATTERN # fgrep --null-data PATTERN
45. Pour afficher l'aide :
# fgrep -h
46. Pour imprimer le numéro de version du grep :
# fgrep -V