grep : Afficher les lignes correspondant à un motif donné
Table des matières
grep est un programme en ligne de commande de recherche de chaînes de caractères
L'utilisation basique de grep où on souhaite filtrer la sortie d'une commande, avec ici, filtrer que ce qui contient max_input_time :
La sortie :
Dans le cas d'un fichier, on peut le faire qu'avec grep (utilisation d'une seule commande et donc plus "performant" que l'emploi de 2 commandes) :
La sortie :
Si on veut chercher dans des fichiers de manière récursive :
La sortie (on remarque qu'on a le nom des fichiers) :
On utilise ici l'option -v qui affiche le contraire de ce qui est indiqué dans l'expression régulière :
On va alors utiliser l'option -o qui n'affiche que ce qui correspond.
Exemple ici, n'afficher que les adresses IP du fichier hosts :
Introduction
grep est un programme en ligne de commande de recherche de chaînes de caractères
Syntaxe de la commande
Code BASH :
grep [options] modèle_de_critères [fichier1 ...]
Utiliser grep
Cas simple : filtrer des lignes d'une commande
L'utilisation basique de grep où on souhaite filtrer la sortie d'une commande, avec ici, filtrer que ce qui contient max_input_time :
Code BASH :
cat /etc/php/apache2-php5.6/php.ini | grep max_input_time
La sortie :
Code BASH :
; max_input_time
max_input_time = 300
Filtrer des lignes d'un fichier
Dans le cas d'un fichier, on peut le faire qu'avec grep (utilisation d'une seule commande et donc plus "performant" que l'emploi de 2 commandes) :
Code BASH :
grep max_input_time /etc/php/apache2-php5.6/php.ini
La sortie :
Code BASH :
; max_input_time
max_input_time = 300
Chercher les occurrences dans tous les fichiers d'un dossier
Si on veut chercher dans des fichiers de manière récursive :
Code BASH :
grep -r max_input_time /etc/php/
La sortie (on remarque qu'on a le nom des fichiers) :
Code BASH :
/etc/php/fpm-php5.6/php.ini:; max_input_time /etc/php/fpm-php5.6/php.ini:max_input_time = 60 /etc/php/apache2-php5.6/php.ini:; max_input_time /etc/php/apache2-php5.6/php.ini:max_input_time = 300 /etc/php/cgi-php5.6/php.ini:; max_input_time /etc/php/cgi-php5.6/php.ini:max_input_time = 60 /etc/php/cli-php5.6/php.ini:; max_input_time /etc/php/cli-php5.6/php.ini:max_input_time = 60
Afficher un fichier de conf sans les commentaires et lignes vides
On utilise ici l'option -v qui affiche le contraire de ce qui est indiqué dans l'expression régulière :
Code BASH :
grep -v -E "(#|^$)" /etc/logrotate.conf
Afficher uniquement ce qui nous intéresse dans la ligne
On va alors utiliser l'option -o qui n'affiche que ce qui correspond.
Exemple ici, n'afficher que les adresses IP du fichier hosts :
Code BASH :
grep -Eo '^([0-9])+.([0-9])+.([0-9])+.([0-9])+' /etc/hosts