Avez-vous déjà été confronté à la tâche de rechercher une chaîne ou un motif particulier dans un fichier, mais vous ne savez pas par où commencer ? Eh bien, voici grep à la rescousse!

grep est un puissant chercheur de modèles de fichiers 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 packages 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]    

J’ai trouvé que le moyen le plus simple de se mouiller les pieds avec le commande grep consiste simplement à plonger dans le vif du sujet et à utiliser des exemples concrets.

1. Rechercher et trouver des fichiers sous Linux

Disons que vous venez d’installer une nouvelle copie du nouveau Ubuntu sur votre machine et que vous allez donner Python scénariser un plan.

Vous avez parcouru le Web à la recherche de tutoriels, mais vous voyez qu’il existe 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 le programme d’installation, ou s’il a installé des modules.

Publicité

Exécutez simplement la commande dpkg suivante avec grep comme montré:

# dpkg -l | grep -i python

Recherche de fichiers avec la commande Grep

ii  libpython3-stdlib:amd64                    3.8.2-0ubuntu2                      amd64        interactive high-level object-oriented language (default python3 version)
ii  libpython3.8:amd64                         3.8.10-0ubuntu1~20.04.5             amd64        Shared Python runtime library (version 3.8)
ii  libpython3.8-minimal:amd64                 3.8.10-0ubuntu1~20.04.5             amd64        Minimal subset of the Python language (version 3.8)
ii  libpython3.8-stdlib:amd64                  3.8.10-0ubuntu1~20.04.5             amd64        Interactive high-level object-oriented language (standard library, version 3.8)
ii  python-apt-common                          2.0.0ubuntu0.20.04.8                all          Python interface to libapt-pkg (locales)
ii  python3                                    3.8.2-0ubuntu2                      amd64        interactive high-level object-oriented language (default python3 version)
ii  python3-apport                             2.20.11-0ubuntu27.24                all          Python 3 library for Apport crash report handling
ii  python3-apt                                2.0.0ubuntu0.20.04.8                amd64        Python 3 interface to libapt-pkg
ii  python3-aptdaemon                          1.1.1+bzr982-0ubuntu32.3            all          Python 3 modules for the server and client of aptdaemon
ii  python3-aptdaemon.gtk3widgets              1.1.1+bzr982-0ubuntu32.3            all          Python 3 GTK+ 3 widgets to run an aptdaemon client
ii  python3-blinker                            1.4+dfsg1-0.3ubuntu1                all          fast, simple object-to-object and broadcast signaling library
ii  python3-brlapi:amd64                       6.0+dfsg-4ubuntu6                   amd64        Braille display access via BRLTTY - Python3 bindings
...

D’abord, nous avons couru dpkg –lqui répertorie les installations *.deb paquets sur votre système. Deuxièmement, nous avons redirigé cette sortie vers grep –i python, qui indique simplement « aller à grep et filtrer et renvoyer tout avec ‘python‘ dedans. »

La –i l’option est là pour ignorer la casse, comme grep est sensible à la casse. En utilisant le –i option est une bonne habitude à prendre à moins, bien sûr, que vous essayiez de cibler une recherche plus spécifique.

2. Rechercher et filtrer des fichiers sous Linux

La grep peut également être utilisé pour rechercher et filtrer dans des fichiers individuels ou dans plusieurs fichiers. Prenons ce scénario :

Vous rencontrez des problèmes avec votre Serveur Web Apacheet vous avez contacté l’un des nombreux forums géniaux sur le net pour demander de l’aide.

L’âme bienveillante qui vous répond vous a demandé de poster le contenu de votre /etc/apache2/apache2.conf dossier. Ne serait-il pas plus facile pour vous, le gars qui vous aide et tous ceux qui le lisent si vous pouviez supprimer toutes les lignes commentées ? Bien, vous pouvez! Exécutez simplement ceci :

# grep -v ^\# /etc/apache2/apache2.conf | grep  .

La –v l’option indique grep pour inverser sa sortie, ce qui signifie qu’au lieu d’imprimer les lignes correspondantes, faites l’inverse et imprimez toutes les lignes qui ne correspondent pas à l’expression, dans ce cas, le # lignes commentées.

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.

Imprimer le contenu du fichier en excluant les commentaires et les lignes vides

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>

3. Trouvez tous les fichiers .mp3 sous Linux

La grep peut être très utile pour filtrer sortie standard. Par exemple, disons que vous avez un dossier complet rempli de fichiers musicaux dans un tas de formats différents.

Vous voulez trouver tous les *.mp3 fichiers de l’artiste Jay Z, mais vous ne voulez aucune des pistes remixées. Utilisant un trouver la commande avec un couple de grep les tuyaux feront l’affaire :

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

Dans cet exemple, nous utilisons trouver pour imprimer tous les fichiers avec un *.mp3 extension, en la raccordant à grep –i pour filtrer et imprimer tous les fichiers portant le nom « Jay Z” puis un autre tuyau pour grep –vi qui filtre et n’imprime pas tous les noms de fichiers avec la chaîne (dans tous les cas) « remixer”.

[ You might also like: 35 Practical Examples of Linux Find Command ]

4. Afficher le nombre de lignes avant ou après la chaîne de recherche

Un autre couple d’options sont les –A et –B commutateurs, qui affichent la ligne correspondante et le nombre de lignes qui précèdent ou suivent la chaîne de recherche.

Bien que la page de manuel donne une explication plus détaillée, je trouve qu’il est plus facile de se souvenir des options comme –A = aprèset –B = avant de:

# ifconfig | grep -A 4 inet
# ifconfig | grep -B 2 UP
Imprimer Le Nombre De Lignes Avant Et Après La Chaîne
Imprimer Le Nombre De Lignes Avant Et Après La Chaîne

5. Imprime le nombre de lignes autour du match

Le grép’s –C est similaire, mais au lieu d’imprimer les lignes qui viennent avant ou après 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. Comptez le nombre de matchs

Similaire à la tuyauterie a grep chaîne en nombre de mots (commande wc) l’option intégrée de grep peut effectuer la même chose pour vous :

# ifconfig | grep -c inet6

7. Rechercher des fichiers par chaîne donnée sous Linux

La –n option pour grep est très utile lors du débogage de fichiers lors d’erreurs de compilation. Il 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 de manière récursive dans tous les répertoires

Si vous souhaitez rechercher une chaîne dans le répertoire courant avec tous les sous-répertoires, vous pouvez spécifier le –r possibilité de rechercher récursivement :

# grep -r “function” *

9. Rechercher le motif entier

Passer le -w L’option grep recherche le motif entier qui se trouve dans la chaîne. Par exemple, en utilisant :

# ifconfig | grep -w "RUNNING"

Imprime la ligne contenant le motif entre guillemets. Par contre, si vous essayez :

# ifconfig | grep -w "RUN"
Trouver Le Modèle Entier
Trouver Le Modèle Entier

Rien ne sera renvoyé car nous ne recherchons pas un modèle, mais un mot entier.

10. Rechercher une chaîne dans les fichiers compressés

Les dérivés de grep méritent d’être mentionnés. Le premier est zgrepqui, à l’instar de zcatest à utiliser sur gzippé des dossiers. Il prend les mêmes options que grep et s’utilise de la même manière :

# zgrep -i error /var/log/syslog.2.gz
Rechercher Une Chaîne Dans Des Fichiers Compressés
Rechercher Une Chaîne Dans Des Fichiers Compressés

11. Faire correspondre les expressions régulières dans les fichiers

La commande egrep est un autre dérivé qui signifie « Expression régulière globale étendue”. Il reconnaît des méta-caractères d’expression supplémentaires tels que at + ? | et ().

[ You might also like: What’s Difference Between Grep, Egrep, and Fgrep in Linux? ]

égrep est très utile pour rechercher des fichiers source et d’autres morceaux de code, en cas de besoin. Il peut être invoqué à partir de grep en précisant le –E option.

# grep -E

12. Rechercher une chaîne de modèle fixe

La grep recherche dans un fichier ou une liste de fichiers une chaîne de modèle fixe. C’est la même chose que grep -F. Une façon courante d’utiliser grep est de lui passer un fichier de patterns :

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Ceci n’est qu’un point de départ avec grep, mais comme vous êtes probablement en mesure de le voir, il est inestimable à diverses fins. Mis à part les simples commandes d’une ligne que nous avons implémentées, grep peut être utilisé pour écrire puissant cron emplois, et robuste scripts shellpour un début.

[ You might also like: 11 Advanced Linux ‘Grep’ Commands on Character Classes and Bracket Expressions ]

Soyez créatif, expérimentez avec les options sur le page de manuelet proposer grep expressions qui servent vos propres objectifs !

Rate this post
Publicité
Article précédentInfovista et Gigamon assurent une plus grande flexibilité et connectivité pour les réseaux 5G
Article suivantModern Warfare 2: La meilleure version MX9
Avatar De Violette Laurent
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici