12 exemples pratiques de la commande grep Linux

12 exemples pratiques de la commande grep Linux

Avez-vous déjà été confronté à la tâche de rechercher une chaîne ou un modèle particulier dans un fichier, mais je n'ai aucune idée de notre début de recherche? Eh bien, voici grep à la rescousse!

grep est un puissant chercheur de motifs 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 installer grep [sur Debian, Ubuntu et Mint] $ sudo yum install grep [sur Rhel / centos / fedora et Rocky Linux / Almalinux] $ sudo émerge -a sys-apps / grep [sur Gentoo Linux] $ sudo apk ajouter grep [sur Alpine Linux] $ sudo pacman -s grep [sur Arch Linux] $ sudo zypper installer grep [sur Ouverte]] 

J'ai trouvé que le moyen le plus simple de se mouiller les pieds avec le commande grep c'est simplement plonger directement et utiliser des exemples du monde réel.

1. Rechercher et trouver des fichiers dans Linux

Disons que vous venez d'installer une nouvelle copie du nouveau Ubuntu sur votre machine et que vous allez donner Python scripter un coup de feu.

Vous avez parcouru le Web à la recherche de tutoriels, mais vous voyez qu'il existe deux versions différentes de Python en usage, et vous ne savez pas quelle version de Python est installée sur Ubuntu par l'installateur, ou s'il a installé des modules.

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

# dpkg -l | grep -i python
Trouver des fichiers avec la commande grep
II libpython3-stdlib: AMD64 3.8.2-0ubuntu2 AMD64 Langue interactive orientée objet de haut niveau (version Python3 par défaut) II libpython3.8: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Bibliothèque d'exécution Python partagée (version 3.8) II libpython3.8 minutes: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Sous-ensemble minimal de la langue Python (version 3.8) II libpython3.8-stdlib: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Langue interactive axée sur les objets de haut niveau (Library Standard, version 3.8) II Python-APT-COMMON 2.0.0ubuntu0.20.04.8 Toute interface Python à Libapt-Pkg (Lieux) II Python3 3.8.2-0UBUNTU2 AMD64 Langue interactive orientée objet de haut niveau (version Python3 par défaut) II Python3-Apport 2.20.11-0ubuntu27.24 All Python 3 Library for Apport Crash Report Gestion II Python3-APT 2.0.0ubuntu0.20.04.8 AMD64 Python 3 Interface à Libapt-Pkg II Python3-APTDAEMON 1.1.1 + bzr982-0ubuntu32.3 tous les modules Python 3 pour le serveur et le client d'AptDaemon II Python3-APTDAEMON.gtk3widgets 1.1.1 + bzr982-0ubuntu32.3 Tous les widgets de Python 3 GTK + 3 pour exécuter un client aptDaemon II Python3-clinker 1.4 + DFSG1-0.3UBUNTU1 All Fast, simple objet-objet et bibliothèque de signalisation de diffusion II Python3-brlapi: AMD64 6.0 + DFSG-4UBUNTU6 AMD64 Braille Affichage Accès via BRLTTY - LESSIONNES PYTHON3… 

Tout d'abord, nous avons couru dpkg -l, quelles listes installées *.deb Packages sur votre système. Deuxièmement, nous avons tué cette sortie pour grep -i Python, qui déclare simplement «aller à Grep et filtrer et tout renvoyer avec 'python'."

Le -je L'option est là pour ignorer le cas, comme grep est sensible à la casse. En utilisant le -je L'option est une bonne habitude de se lancer à moins que, bien sûr, vous essayez de clouer une recherche plus spécifique.

2. Rechercher et filtrer les fichiers dans Linux

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

Vous avez des problèmes avec votre Serveur Web Apache, Et vous avez contacté l'un des nombreux forums impressionnants sur le net pour demander de l'aide.

L'âme aimable qui vous répond vous a demandé de publier le contenu de votre / etc / apache2 / apache2.confli déposer. Ne serait-il pas plus facile pour vous, le gars qui vous aide, et tout le monde le lisant si vous pouviez supprimer toutes les lignes commentées? Bien, vous pouvez! Exécutez ceci:

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

Le -V L'option raconte grep Pour inverser sa sortie, ce qui signifie qu'au lieu d'imprimer des lignes correspondantes, faites le contraire 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 vierges
DefaulTruntimedir $ apache_run_dir pidfile $ apache_pid_file timeout 300 keepalive on maxkeepaliverests 100 keepalivetimeout 5 user $ apache_run_user groupe $ apache_run_group.Log LoGlevel Warn inclut les mods opératoires compatibles / *.Charge inclut les mods opposés / *.confe inclut les ports.Les options de confes suivent les links indemnités  

3. Trouver tout .Fichiers MP3 dans Linux

Le grep peut être très utile pour filtrer stdout. Par exemple, disons que vous avez un dossier entier plein de fichiers musicaux dans un tas de formats différents.

Vous voulez trouver tout le *.mp3 fichiers de l'artiste Jay Z, Mais vous ne voulez aucun des morceaux remixés. Utilisant un trouver la commande avec quelques-uns de grep Les tuyaux feront l'affaire:

# trouver . -nom "*.MP3 ”| grep -i jayz | grep -vi "remix" 

Dans cet exemple, nous utilisons trouver Pour imprimer tous les fichiers avec un *.mp3 extension, la tuyau grep -i Pour filtrer et imprimer tous les fichiers avec le nom "Jay Z"Et puis un autre tuyau à grep -vi qui filtre et n'imprime pas tous les noms de fichiers avec la chaîne (en tout cas) "remix".

[Vous pourriez également aimer: 35 exemples pratiques de la commande Linux Find]

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

Un autre couple d'options sont les -UN et -B Commutateurs, qui affichent la ligne correspondante et le nombre de lignes qui viennent avant ou après la chaîne de recherche.

Bien que la page de l'homme donne une explication plus détaillée, je trouve plus facile de se souvenir des options comme -UN = après, et -B = avant:

# ifconfig | grep -a 4 INET # ifconfig | grep -b 2 up 
Imprimer le nombre de lignes avant et après la chaîne

5. Imprime le nombre de lignes autour de la correspondance

Les grep -C L'option est similaire, mais au lieu d'imprimer les lignes qui viennent avant ou après la chaîne, il imprime les lignes dans les deux sens:

# ifconfig | grep -c 2 lo Erreurs Tx 0 Drop 0 Overruns 0 Carrier 0 Collisions 0 Lo: Flags = 73 MTU 65536 INET 127.0.0.1 masque de réseau 255.0.0.0 INET6 :: 1 Prefixlen 128 SCOPEID 0x10 LOOP TXQUEUELEN 1000 (Loopback local) Paquets RX 15314 octets 1593769 (1.5 Mo) Erreurs Rx 0 Drop 0 Overruns 0 Frame 0 

6. Compter le nombre de matchs

Similaire à la tuyauterie d'un grep L'option intégrée de la chaîne à Word Count (Commande WC) peut effectuer la même chose pour vous:

# ifconfig | grep -c inet6

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

Le -n option pour grep est très utile lors du débogage des fichiers pendant les erreurs de compilation. Il affiche le numéro de ligne dans le fichier de la chaîne de recherche donnée:

# configuration grep -n "Main".py

8. Recherchez une chaîne récursivement dans tous les répertoires

Si vous souhaitez rechercher une chaîne dans le répertoire actuel avec tous les sous-répertoires, vous pouvez spécifier le -r Option pour rechercher de manière récursive:

# grep -r "fonction" * 

9. Recherchez l'ensemble du modèle

Passant le -w Option pour les recherches Grep pour l'ensemble du modèle qui se trouve dans la chaîne. Par exemple, en utilisant:

# ifconfig | grep -w "courir"

Imprimera la ligne contenant le motif en guillemets. D'un autre côté, si vous essayez:

# ifconfig | grep -w "run"
Trouver un modèle entier

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

dix. Recherchez une chaîne dans des fichiers gzipped

Les dérivés de Grep méritent des dérivés de Grep. Le premier est zgrep, qui, similaire à zcat, est pour une utilisation sur gzippé des dossiers. 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 
Recherchez la chaîne dans des fichiers gzippés

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

La commande Egrep est une autre dérivée qui représente «Expression régulière mondiale étendue". Il reconnaît des méta-personnages d'expression supplémentaires tels à + ? | et ().

[Vous pourriez également aimer: quelle est la différence entre Grep, Egrep et Fgrep dans Linux? ]]

faire un coup de pouce est très utile pour rechercher des fichiers source et d'autres éléments de code, si le besoin résulte. Il peut être invoqué par rapport grep en spécifiant le -E option.

# grep -e 

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

Le fgrep recherche un fichier ou une liste de fichiers pour une chaîne de modèle fixe. C'est la même chose que grep -f. Une façon courante d'utiliser fgrep est de passer un fichier de modèles:

# fgrep -f file_full_of_patterns.txt file_to_search.SMS

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

[Vous pourriez également aimer: 11 Commandes avancées Linux 'Grep' sur les classes de caractères et les expressions de support]

Soyez créatif, expérimentez les options sur le page, et trouver expressions grep qui servent vos propres objectifs!