Grep

De bricosoft
(Redirigé depuis Egrep)
Aller à la navigation Aller à la recherche
<google uid="C08" position="right"></google>
Erreur dans le widget Twitter Search: unable to write file /home/gbp4dt5/zones/bricosoft.com/www/extensions/Widgets/compiled_templates/wrt6974d69acc6ad5_38290947
<google uid="C06" position="left"></google>
Fichier:Crepes dsc07085.jpg
De bonnes grèpes empilées.

A la chandeleur, une bonne grep ça fait du bien par où ça passe. grep est une commande unix pour rechercher un texte dans des fichiers.

recherche avec lignes au dessous et au dessus

Le man appelle ça la longueur de contexte.

grep --after-context=x : affiche les x lignes à la suite du motif recherché (l'abbréviation est -A x)

Ou :

grep --before-context=x : affiche les x lignes qui précède le motif recherché (l'abbréviation est -B x)

Exemple en cherchant un id d'un objet js :

$ rgrep -A 2 -i "win_cassoulet" * 
js/gest_liste.js:		id: 'win_cassoulet',
js/gest_liste.js-		title : lang.gridTBarButtons.cassoulet.confirmBoxTitle,
js/gest_liste.js-		collapsible: true,

visualiser la quantité de mémoire en attente d'écriture sur le disque

Cela vous donne la quantité de données perdues avant d'appuyer sur le bouton reset de l'ordi.

$ grep ^Dirty /proc/meminfo
Dirty:               468 kB

recherche avec exclusion de plusieurs termes

Exemple en parsant vos error.log apache

# grep 'error' *error.log | grep -vE '(not found|not exist|ndefined|PHP Warning)'

regexp de grep

Ne cherchez plus voici les ensembles magiques pour expression régulière :

[:alnum:] - caractère alphanumerique
[:alpha:] - caractère alphabétique
[:blank:] - espace et tabulation
[:digit:] - chiffres : '0 1 2 3 4 5 6 7 8 9'.
[:lower:] - lettre en minuscule : 'a b c d e f g h i j k l m n o p q r s t u v w x y z'.
[:space:] - caractère d'espace : tabulation, nouvelle ligne, tabulation verticale, saut de page, retour chariot et espace.
[:upper:] - lettre en majuscule: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'.

enlever les enregistrements A d'un axfr

$ dig axfr bricosoft.com @a.izz.se | grep -v "IN[[:space:]]*A"

Un axfr nettoyé des commentaires, des lignes vides, des enregistrements A :

$ dig axfr bricosoft.com @a.izz.se | grep -vE "(^;|^$|IN[[:space:]]*A)"

rechercher des variantes d'un terme

Exemple de termes capturés : backup, Backup, Back Up, etc.

$ grep -i "back *up" *.conf

utiliser grep dans des tests conditionnels en shell bash

if whois xn--1xaa.eu | grep -q AVAILABLE
then
    echo "The domain is free :)"
else
    echo "The domain is registred :("
fi

enlever les lignes de commentaires et vides d'un fichier de conf

On peut enlever des lignes inutiles à l'aide de la puissance des expressions rationnelles :

grep -ve "^\ *\#\|^$" /etc/apache2/apache2.conf

exclure des dossiers dans la recherche

L'exclusion de dossier améliore grandement les performances de recherche (+ionice ici).

$ ionice -c3 grep -r --exclude-dir=".svn" "MOTIF INTROUVABLE" *

opérateurs logiques AND, OR, etc

ET logique : AND

grep -E 'aiguille.*epingle' meule-de-fouin

L'exemple recherche aiguille suivit de epingle dans le fichier texte meule-de-fouin.

Si l'ordre importe peu, rajoutez la regexp dans l'autre sens séparé par un pipe | :

grep -E 'aiguille.*epingle|epingle.*aiguille' meule-de-fouin

OU logique : OR

Le pipe | permet de faire un OU logique :

grep -E 'aiguille|epingle' meule_de_fouin

zgrep

Ce n'est pas la version 1337 de grep mais cela permet de rechercher dans des fichiers gzip .gz

$ zgrep "COPYING" apropos.1.gz 
.\" License as specified in the file COPYING that comes with the 
$ zgrep -ri "aiguille" meule-de-fouin*.gz

Liens

{{#switch:|subgroup|child=|none=|#default=

}}