Page 1 sur 1

Grep linux aide.

Message Publié : 29 Oct 2016 22:21
par mackguil
J'ai besoin de trouver deux chaines A et B pour les sortir d'un log, j'utilise la commande grep ' \"[0-9]\{8,\}\",' et je voudrais joindre '\"[0-9]\{2,\}\",' à ma recherche mais dans la même ligne sans utiliser un | (pipe) et deux grep.

Une idée lumineuse à proposer ?

Re: Grep linux aide.

Message Publié : 29 Oct 2016 23:48
par max
avec un | dans le regex justement

grep -E "([0-9]{8,}|[0-9]{2,})" ...

le -E c'est pour ne pas devoir échapper tes parenthèses et autres caractères spéciaux.

Re: Grep linux aide.

Message Publié : 30 Oct 2016 00:10
par mackguil
max a écrit :avec un | dans le regex justement

grep -E "([0-9]{8,}|[0-9]{2,})" ...

le -E c'est pour ne pas devoir échapper tes parenthèses et autres caractères spéciaux.


Code : Tout sélectionner
grep premier terme de cherche file.csv | grep -Eo ''[0-9]\{6,\}'|'\,[0-9]\{2,\}\,'' | sort -r


M'affiche des 00000 et 00001, je ne vois pas mon erreur.

Edit: Merci max, c'était pourtant évident mais des yeux extérieurs sont toujours les bienvenus :wink:

Code : Tout sélectionner
grep premier terme de cherche file.csv | grep -Eo ',"[0-9]{6,}",|,[0-9]{2,}," | sort -r

Re: Grep linux aide.

Message Publié : 30 Oct 2016 00:31
par max
Tu ne dois pas mettre de \ si tu utilises -E

Par contre, l'alternative entre "une suite de caractères parmi 0 à 9 et de longueur 2 ou plus" et "une suite de caractères parmi 0 à 9 et de longueur 6 ou plus" c'est pas judicieuse.

ton {2,} va choper aussi les chaînes de 8 caratères ou plus. Pas besoin d'alternative.

Un site pour tester et aider à comprendre https://regex101.com/

Re: Grep linux aide.

Message Publié : 30 Oct 2016 00:43
par mackguil
Ok boss, merci.