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
grep [options] modèle_de_critères [fichier1 ...]
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
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