[gull] Petite question grep

Daniel Cordey dc at mjt.ch
Wed Nov 18 15:02:16 CET 2009


On Wednesday 18 November 2009 13:54:30 Nicolas Borboën wrote:

> Comment puis-je exprimer un "et" dans le pattern de grep ou comment
> fusionner le résultat de deux grep?

On peut tres bien "enfile" la sortie d'un grep comme input de l'autre avec un 
simple pipe.

	grep a <files> | grep b

Ceci donnera les *lignes* qui satisfont aux deux conditions ! En effet, le 
deuxieme grep ne verra que les lignes qui lui seront passees. Ce qui revient 
(gross-modo) a ecrire :

	grep 'a*b' <files>

Or, si j'ai bien compris le probleme, on veut avoir la liste des fichiers qui 
contiennet expr1 & expr2, mais pas forcement sur *la meme ligne*. Juste ?

Si c'est le cas, je propose une ecriture marrante, mais qui implique que les 
noms de fichiers ne contienent pas d'espaces (sinon il fauit utiliser xargs). 
je dis bien... c'est juste interessant... :-)

grep "expr2" $(grep -rilw "expr1" * 2>/dev/null | sed 's/:.*$//' | sort -u)

dc


More information about the gull mailing list