(sans garantie, je n'ai pas testé). Mais awk a été conçu pour ce genre de choses. On peut aussi utiliser Ruby ou Perl.
-- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net 8, rue de la Faïencerie, 92340 Bourg La Reine, France
On 2004-12-13, Samuel <samuelNOSPAM@NOSPAM.INVALID> wrote:
Bonjour,
petite question sur GREP :
Je cherche à additionner le résultat d'une sortie de GREP, genre :
grep 15* /var/log/mainlog
Je récupère :
158
153
155
Et je voudrais avoir la somme (466), c'est possible ?
Tout cela en une seule ligne de commande, genre :
(sans garantie, je n'ai pas testé). Mais awk a été conçu pour ce genre
de choses. On peut aussi utiliser Ruby ou Perl.
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France
(sans garantie, je n'ai pas testé). Mais awk a été conçu pour ce genre de choses. On peut aussi utiliser Ruby ou Perl.
-- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net 8, rue de la Faïencerie, 92340 Bourg La Reine, France
Stephane Chazelas
2004-12-13, 14:25(+01), Samuel:
Bonjour,
petite question sur GREP : Je cherche à additionner le résultat d'une sortie de GREP, genre :
grep 15* /var/log/mainlog
Je récupère :
158 153 155
Et je voudrais avoir la somme (466), c'est possible ? [...]
Utilise awk a la place.
Note que grep 15* ne fait probablement pas ce que tu veux. D'abord, ca sera interpreté par le shell. S'il trouve des fichiers dont le nom commence par 15 (exemple: 15 - toto.mp3), il remplacement 15* par la liste de ces fichiers. Sinon il passera 15* a grep. Les /patterns/ de grep sont des expressions rationnelles, ce n'est pas la meme syntaxe que les patterns du shell.
Pour grep, 15* veut dire un 1 suivi d'un nombre quelconque de 5s n'importe ou sur la ligne, donc par exemple, ca matchera 21 qui contient un 1 suivi de 0 5.
Essaie:
awk '/^15/ { sum += $0 } END { print sum }'
ou
awk '0+$0 >= 150 && 0+$0 < 160 { sum += $0 } END { print sum }'
-- Stephane
2004-12-13, 14:25(+01), Samuel:
Bonjour,
petite question sur GREP :
Je cherche à additionner le résultat d'une sortie de GREP, genre :
grep 15* /var/log/mainlog
Je récupère :
158
153
155
Et je voudrais avoir la somme (466), c'est possible ?
[...]
Utilise awk a la place.
Note que grep 15* ne fait probablement pas ce que tu veux.
D'abord, ca sera interpreté par le shell. S'il trouve des
fichiers dont le nom commence par 15 (exemple: 15 - toto.mp3),
il remplacement 15* par la liste de ces fichiers. Sinon il
passera 15* a grep. Les /patterns/ de grep sont des expressions
rationnelles, ce n'est pas la meme syntaxe que les patterns du
shell.
Pour grep, 15* veut dire un 1 suivi d'un nombre quelconque de
5s n'importe ou sur la ligne, donc par exemple, ca matchera 21
qui contient un 1 suivi de 0 5.
Essaie:
awk '/^15/ { sum += $0 } END { print sum }'
ou
awk '0+$0 >= 150 && 0+$0 < 160 { sum += $0 } END { print sum }'
petite question sur GREP : Je cherche à additionner le résultat d'une sortie de GREP, genre :
grep 15* /var/log/mainlog
Je récupère :
158 153 155
Et je voudrais avoir la somme (466), c'est possible ? [...]
Utilise awk a la place.
Note que grep 15* ne fait probablement pas ce que tu veux. D'abord, ca sera interpreté par le shell. S'il trouve des fichiers dont le nom commence par 15 (exemple: 15 - toto.mp3), il remplacement 15* par la liste de ces fichiers. Sinon il passera 15* a grep. Les /patterns/ de grep sont des expressions rationnelles, ce n'est pas la meme syntaxe que les patterns du shell.
Pour grep, 15* veut dire un 1 suivi d'un nombre quelconque de 5s n'importe ou sur la ligne, donc par exemple, ca matchera 21 qui contient un 1 suivi de 0 5.
Essaie:
awk '/^15/ { sum += $0 } END { print sum }'
ou
awk '0+$0 >= 150 && 0+$0 < 160 { sum += $0 } END { print sum }'
-- Stephane
Laurent Wacrenier
Samuel écrit:
grep 15* /var/log/mainlog
Je ne pense pas que le motif fasse ce que tu en attends.
Je récupère :
158 153 155
Et je voudrais avoir la somme (466), c'est possible ?
awk '/15*/ { sum += $0 } END { print sum }' /var/log/mainlog
Samuel <samuelNOSPAM@NOSPAM.INVALID> écrit:
grep 15* /var/log/mainlog
Je ne pense pas que le motif fasse ce que tu en attends.
Je récupère :
158
153
155
Et je voudrais avoir la somme (466), c'est possible ?
awk '/15*/ { sum += $0 } END { print sum }' /var/log/mainlog