Recherche dans les fichiers avec grep et autres

Anne grep

La commande grep est une des première qu’on apprend sous Linux pour rechercher des expression dans les fichiers. On peut aussi utiliser ack pour le même usage, ou encore ag: the silver searcher, mais je n’ai pas essayé ce dernier.

Un peu de couleur

Saviez-vous que grep peut colorier ses résultats pour mettre en avant les portions de texte qui correspondent à la recherche ? C’est super pratique…

Ca peut se faire avec l’option --color : avec --color=auto grep ne colorie que si la sortie se fait dans un terminal. Ca évite de polluer la sortie avec des caractères de contrôle quand on utilise grep dans un pipe par exemple.

On peut soit redéfinir grep dans son .bashrc, soit faire :

export GREP_OPTIONS='--color=auto'

Par défaut, grep utilise le rouge, mais on peut redéfinir la couleur par :

export GREP_COLOR='1;95'

pour colorier en gras et rose par exemple. (Pour les codes des couleurs, voir mon script dans cette note).

Liste de fichiers

On peut aussi demander à grep d’afficher :

  • la liste des fichiers qui contiennent la chaîne recherchée avec -l (ou --files-with-matches),
  • ou qui ne la contiennent pas avec -L (ou --files-without-match).

Avec ou sans les noms de fichiers

Par défaut, dès que la recherche est faites sur plusieurs fichiers, les lignes sont préfixées par le nom du fichier. On peut :

  • ne pas les afficher avec -h (ou --no-filename),
  • ou on contraire l’ajouter même lorsqu’on ne recherche que dans un fichier avec -H (ou ``–with-filename)

Numéro de ligne

On peut aussi demander à préfixer chaque ligne de sortie par le numéro de la ligne dans le fichier avec l’option -n (ou --line-number).

Voir aussi :