web-dev-qa-db-fra.com

Ajouter des nombres du résultat d'un grep

Je cours la commande suivante:

grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'

et je reçois le résultat suivant:

1
4
0
8

Je voudrais ajouter chacun des chiffres à une variable de comptage en cours d'exécution. Y a-t-il une magie une doublure quelqu'un peut m'aider à construire?

24
Amir Afghani

Cela peut tous être fait dans Awk aussi:

awk '"[0-9]+ errors" {sum += $1}; END {print sum}' verification_report_3.txt
8
Trey Hunner

Vous semblez utiliser [~ # ~ # ~] gnu [~ # ~ ~] Système, donc si -Perl Expressions régulières est disponible, vous pouvez écrire quelque chose comme ceci:

grep -Po '[0-9]+(?=\s+errors)' infile | 
  paste -sd+ | 
    bc

P.s. J'ai modifié l'expression régulière (ajouté le quantificateur +) pour autoriser les chiffres> 9.

P.s. Alternativement, Awk est suffisant (en supposant GNU AWK):

awk 'END { print s }
/[0-9]+[[:space:]]+errors/ { 
  s += $1 
  }' infile
6
Dimitre Radoulov

Essayez de tuyer la sortie de votre grep dans

awk 'BEGIN {total=0;}{total+=$1;}END {print "Total: ",total}'
3
user591