Voir le flux RSS

Quentin Apruzzese

[Linux] Exemples d'utilisation de grep et awk

Noter ce billet
par , 09/03/2016 à 10h48 (1134 Affichages)
« L’information n’est pas le savoir. Le savoir n’est pas la sagesse. La sagesse n’est pas la beauté. La beauté n’est pas l’amour. L’amour n’est pas la musique, et la musique, c’est ce qu’il y a de mieux. » - Frank Zappa
--
Chercher une chaine "225978" dans tous les fichiers d'un répertoire récursivement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grep -r '/path/to/somewhere/' -e "pattern"
-r : permet de rechercher dans les sous dossiers
-e : utilise le pattern indiqué. ceci permet de protéger les motifs commençant par -.
Remarque : Il n'est pas nécessaire d'utiliser les '' ou "" dans la commande si il n'y a pas d'espace.

Récupérer le nom de tous les fichiers contenant "225978" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grep -wr 225978 .|awk -F ':' '{print $1}'|sort -u
-w : Ne sélectionne que les lignes contenant une corre*spondance formant un mot complet. La sous-chaîne correspondante doit donc être soit au début de la ligne, soit précédée d'un caractère n'appartenant pas à un mot. De même elle doit se trouver soit à la fin de la ligne, soit être suivie par un car*actère n'appartenant pas à un mot. Les caractères composants les mots sont les lettres, les chiffres et l'underscore _. Bien entendu les minuscules accentuées ne sont pas des lettres ! elles servent donc à séparer les mots...
. : le dossier courant
grep -wr 225978 . seul donne donc une liste de lignes de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
.path/of/file: line of code in the file
L'idée est donc de récupérer que la première partie de la commande avant le ":", et c'est là que awk intervient.
awk : permet de séparer un fichier en colonnes et d'effectuer des actions dessus.
-F ':' : spécifie ':' comme séparateur de colonnes
'{print $1}'. prends le premier argument, soit la première colonne, donc dans notre cas 'path/of/file'. Pour awk, $0 représente l'ensemble des arguments (toute la ligne), $1 le premier argument dans une liste séparée par le séparateur, etc...
Plus d'infos : http://www.bruno-garcia.net/www/Unix/Docs/awk.html
sort -u : enlève les doublons.

Astuce : mettre les listes de noms de fichiers dans une variable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LIST=$(grep -wr 225978 .|awk -F ':' '{print $1}'|sort -u)
Chercher une chaine dans cette liste :
Supprimer de git les fichiers modifiés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
git checkout -- $(gt status|grep modified.*java$|awk '{print $2}'

Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Viadeo Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Twitter Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Google Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Facebook Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Digg Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Delicious Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog MySpace Envoyer le billet « [Linux] Exemples d'utilisation de grep et awk » dans le blog Yahoo

Catégories
Sans catégorie

Commentaires