Egrep

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Recherche de motifs (expressions régulières étendues)
Commande egrep (historique) / grep -E (recommandée)
Contexte Alias historique de grep -E, déprécié par GNU grep
Voir aussi Grep (BRE/ERE/PCRE, options communes)

egrep est l'alias historique de grep -E : il active les expressions régulières étendues (ERE — alternance |, quantificateurs +/?/{n,m} sans avoir besoin de les échapper), là où grep seul n'accepte que la syntaxe de base (BRE). De la même façon, fgrep était l'alias historique de grep -F (recherche de chaîne littérale, sans interprétation d'expression régulière).

⚠️ egrep et fgrep sont dépréciés par GNU grep depuis plusieurs années au profit des formes explicites grep -E et grep -F. Sur un système à jour, exécuter egrep peut afficher un avertissement du type egrep: warning: egrep is obsolescent; using grep -E, et certaines distributions récentes ne fournissent plus du tout les binaires egrep/fgrep (paquets minimalistes, environnements conteneurisés). Il vaut donc mieux prendre directement l'habitude d'écrire grep -E/grep -F plutôt que de compter sur ces alias.

Alternance de motifs

En ERE, l'alternance | s'utilise directement sans échappement (contrairement au BRE de grep qui demanderait \|) :

# forme recommandée
ifconfig | grep -E 'lo|eth'

# forme historique équivalente
ifconfig | egrep 'lo|eth'

Motif binaire (lignes composées uniquement de 0 et de 1, suivies d'un mot) :

grep -E '^(0|1)+ [a-zA-Z]+$' searchfile.txt

Comptage de lignes correspondant à un motif (option -c, commune à toute la famille grep) :

grep -Ec '^1|01$' lots_o_bits

Recherche d'une adresse IP

Motif approximatif (ne valide pas que chaque octet reste ≤ 255, mais suffisant pour repérer rapidement des adresses IPv4 dans un fichier de logs) :

grep -E '([0-9]{1,3}\.){1,3}[0-9]{1,3}' fichier.txt

Filtrer les lignes vides et les commentaires

Combinaison très courante pour ne garder que les lignes utiles d'un fichier de configuration, en inversant la correspondance avec -v :

cat /etc/snmp/snmpd.conf | grep -Ev '^#|^$'

Voir aussi

  • Grep — expressions régulières de base (BRE) vs étendues (ERE) vs Perl (PCRE), et l'ensemble des options communes à toute la famille grep