Avez-vous déjà été confronté à la tâche de chercher une chaîne ou motif particulier dans un fichier, sans avoir aucune idée par où commencer à chercher ? Eh bien, voici la commande grep à la rescousse !
Grep est un puissant chercheur de motifs de fichier qui est équipé sur chaque distribution de Linux. Si pour une raison quelconque, il n’est pas installé sur votre système, vous pouvez facilement l’installer via votre gestionnaire de paquets comme indiqué.
$ sudo apt install grep [On Debian, Ubuntu and Mint] $ sudo yum install grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/grep [On Gentoo Linux] $ sudo apk add grep [On Alpine Linux] $ sudo pacman -S grep [On Arch Linux] $ sudo zypper install grep [On OpenSUSE]
I have found that the easiest way to get your feet wet with the grep command is to just dive right in and use some real-world examples.
1. Rechercher et Trouver des Fichiers sous Linux
Disons que vous venez d’installer une nouvelle copie d’Ubuntu sur votre machine et que vous allez essayer le script Python.
Vous avez parcouru le web à la recherche de tutoriels, mais vous voyez qu’il y a deux versions différentes de Python en cours d’utilisation, et vous ne savez pas quelle version de Python est installée sur Ubuntu par l’installateur, ou s’il a installé des modules.
Il suffit d’exécuter la commande dpkg suivante avec grep comme indiqué :
dpkg -l | grep -i python

Tout d’abord, nous avons exécuté dpkg –l
, qui répertorie les paquets *.deb
installés sur votre système. Deuxièmement, nous avons redirigé cette sortie vers grep -i python
, ce qui signifie simplement « aller à grep et filtrer et renvoyer tout ce qui contient ‘python‘ dedans. »
L’option -i
est là pour ignorer la casse, car grep est sensible à la casse. Utiliser l’option -i
est une bonne habitude à prendre, à moins, bien sûr, que vous ne cherchiez à affiner une recherche plus spécifique.
2. Recherche et Filtrage des Fichiers sous Linux
Le grep peut également être utilisé pour rechercher et filtrer dans des fichiers individuels ou multiples. Prenons ce scénario :
Vous rencontrez des problèmes avec votre Serveur Web Apache, et vous avez demandé de l’aide sur l’un des nombreux forums géniaux sur le net.
L’âme charitable qui vous répond vous a demandé de poster le contenu de votre fichier /etc/apache2/apache2.conf. Ne serait-il pas plus facile pour vous, le gars qui vous aide, et pour tout le monde de supprimer toutes les lignes commentées ? Eh bien, vous le pouvez ! Il suffit de taper ceci :
grep -v ^\# /etc/apache2/apache2.conf | grep .
L’option -v
indique à grep d’inverser sa sortie, ce qui signifie qu’au lieu d’afficher les lignes correspondantes, faites le contraire et affichez toutes les lignes qui ne correspondent pas à l’expression, dans ce cas, les lignes commentées avec #
.
Notez que nous avons également utilisé grep .
à la fin afin de masquer la sortie de toutes les lignes vides. De cette façon, nous ne voyons que les paramètres de configuration dans notre terminal.

3. Trouver tous les fichiers .mp3 sous Linux
Le grep peut être très utile pour filtrer à partir de stdout. Par exemple, disons que vous avez un dossier entier rempli de fichiers musicaux dans différents formats.
Vous voulez trouver tous les fichiers *.mp3
de l’artiste JayZ, mais vous ne voulez pas des pistes remixées. En utilisant une commande find avec quelques tubes grep, vous y arriverez :
# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
Dans cet exemple, nous utilisons find pour afficher tous les fichiers avec une extension *.mp3
, les passant à grep –i
pour filtrer et afficher tous les fichiers avec le nom « JayZ » et ensuite un autre tube à grep –vi
qui filtre et ne affiche pas tous les noms de fichiers avec la chaîne (dans n’importe quel cas) « remix« .
[ Vous aimerez peut-être aussi : 35 Exemples Pratiques de la Commande Find Linux ]
4. Afficher le Nombre de Lignes Avant ou Après la Chaîne de Recherche
Deux autres options sont les commutateurs -A
et -B
, qui affichent la ligne correspondante et un certain nombre de lignes avant ou après la chaîne de recherche.
Bien que la page de manuel donne une explication plus détaillée, je trouve plus facile de se rappeler des options comme -A
= après, et -B
= avant:
ifconfig | grep -A 4 inet ifconfig | grep -B 2 UP

5. Imprime le Nombre de Lignes Autour de la Correspondance
L’option -C
de grep est similaire, mais au lieu d’imprimer les lignes qui précèdent ou suivent la chaîne, elle imprime les lignes dans les deux sens:
# ifconfig | grep -C 2 lo TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 15314 bytes 1593769 (1.5 MB) RX errors 0 dropped 0 overruns 0 frame 0
6. Compter le Nombre de Correspondances
Similaire à l’utilisation d’un pipeline avec une chaîne grep vers le compte de mots (commande wc), l’option intégrée de grep peut faire la même chose pour vous:
# ifconfig | grep -c inet6
7. Rechercher des Fichiers par Chaîne Donnée dans Linux
L’option –n
pour grep est très utile lors du débogage de fichiers lors d’erreurs de compilation. Elle affiche le numéro de ligne dans le fichier de la chaîne de recherche donnée:
# grep -n "main" setup.py
8. Rechercher une Chaîne Récursivement dans tous les Répertoires
Si vous souhaitez rechercher une chaîne dans le répertoire actuel ainsi que dans tous les sous-répertoires, vous pouvez spécifier l’option –r
pour effectuer une recherche récursive:
# grep -r “function” *
9. Rechercher le Motif Entier
Passer l’option -w
à grep recherche le motif entier qui se trouve dans la chaîne. Par exemple, en utilisant:
# ifconfig | grep -w "RUNNING"
Imprimera la ligne contenant le motif entre guillemets. En revanche, si vous essayez:
# ifconfig | grep -w "RUN"

Rien ne sera retourné car nous ne recherchons pas un motif, mais un mot entier.
10. Recherche d’une chaîne dans les fichiers Gzippés
Méritant une mention, les dérivés de grep. Le premier est zgrep, qui, similaire à zcat, est utilisé sur les fichiers gzippés. Il prend les mêmes options que grep et est utilisé de la même manière:
# zgrep -i error /var/log/syslog.2.gz

11. Correspondance des Expressions Régulières dans les Fichiers
La commande egrep est un autre dérivé qui signifie « Expression Régulière Globale Étendue ». Elle reconnaît des métacaractères d’expression supplémentaires tels que at + ? |
et ()
.
La commande egrep est très utile pour rechercher des fichiers source et d’autres morceaux de code, si besoin est. Elle peut être invoquée à partir de grep standard en spécifiant l’option -E
.
grep -E
12. Recherche d’une Chaîne de Caractères à Motif Fixe
La commande fgrep recherche une chaîne de caractères à motif fixe dans un fichier ou une liste de fichiers. C’est la même chose que grep -F
. Une façon courante d’utiliser fgrep est de lui passer un fichier de motifs :
fgrep –f file_full_of_patterns.txt file_to_search.txt
C’est juste un point de départ avec grep, mais comme vous pouvez probablement le voir, il est inestimable pour une variété de fins. En plus des simples commandes d’une ligne que nous avons implémentées, grep peut être utilisé pour écrire de puissantes tâches cron et des scripts shell robustes, pour commencer.
Soyez créatif, expérimentez avec les options sur la page man, et trouvez des expressions grep qui servent vos propres besoins!
Source:
https://www.tecmint.com/12-practical-examples-of-linux-grep-command/