Gnu grep : récupérer un paragraphe complet

L'Unix d'IBM (AIX) propose une option intéressante pour la commande grep qui permet de récupérer un paragraphe complet, en précisant le séparateur de paragraphe :

grep -p "PATTERN" FILENAME

Par défaut, le séparateur est une ligne vide, mais on peut le préciser en l'ajoutant après l'option. Par exemple :

grep -p"separateur" "PATTERN" FILENAME

Sous Linux, le gnu grep ne propose pas cette option. Il reste cependant l'option awk ou perl. En utilisant awk, nous disposons de deux formulations différentes :

awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"} /PATTERN/' FILENAMES

ou

awk -v RS="" -v ORS="\n\n" '/PATTERN/' FILENAMES

Par exemple, pour rechercher un groupe LDAP dans un fichier LDIF :

awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"} /dn: cn=AdminUsers,ou=groups,dc=example,dc=com/' Export-Full.ldif

ou avec l'autre option :

# time awk -v RS="" -v ORS="\n\n" '/cn=AdminUsers,ou=groups,dc=example,dc=com/' Export-Full.ldif

 

Catégorie