====== Grep et egrep ====== ===== Exemples ===== Chercher le nombre de mail envoyé pour un jour donné cat /var/log/mail.log | egrep '^Jan 6.* to=' | wc -l Compter le nombre de mail en queue dans postfix mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]' * -v prend toutes les lignes sauf ce dont on passe en argument * -c compte le nombre de ligne suivant un pattern Chercher plusieurs motifs grep -E "(pomme|banane|kiwi)" toto.txt grep -E "pomme|banane|kiwi" toto.txt Rechercher un motif dans une arborescence grep -rHin --color motif * * -r : recursif * -H : affiche le nom du fichier qui contient le motif * -i : insensible à la casse * -n : affiche le numéro de ligne ou se trouve le motif * --color : met de la couleur dans le résultat (il est conseillé de faire un alias grep='grep --color' Le PATTERN utilise par défaut une expression régulière basic de type BRE. Les options suivantes permettent de définir un autre type de regex * -E permet l'extended regex ERE * -P permet le perl regex PRCE Toutes la doc du BRE est dispo dans le man grep, qq exemple grep '192.168.0.[123]' toto.txt Affichera les ip dont le dernier nombre commence par 1 ou 2 ou 3 (.1 .2 .3 .10 .11 .23 .256) grep '192.168.0.[^1]' toto.txt Affichera les ip dont le dernier nombre ne commence pas par 1 Rechercher sur des fichiers avec une extension spécifique grep -rHin --include \*.h --include \*.cpp motif * ==== Générer un mot de passe ==== strings /dev/urandom | grep -o '[[:alpha:]]' | head -n 6 | tr -d '\n'; echo * **strings** permet de n'afficher que les caractères normaux issu de urandom qui peut renvoyer du binaire * **grep -o** n'affiche que les caractères qu'on lui donne. ici que de l'alpha, on peut mettre alnum pour alphanumérique etc..