Bash Sum Nombre moyen dans les fichiers

0

J'ai une série de fichiers avec 2 (deux) lignes. La première ligne contient un nombre entier (1 à 100) tandis que la deuxième ligne contient un nombre décimal (1,0000 à 99,9999). Je dois obtenir la somme de la première ligne et la moyenne de la deuxième ligne, à savoir:

awk '{sum += $1} {avg / $2} NEXT {print sum} END {print avg}' *log

Exemple:

 1log
     20
     4.2
 2log
     34
     1.2

Où la sortie ressemblerait à ceci:

 54
 2.7
Ken J
la source

Réponses:

0

Avec awk, utilisez la FNRvariable qui contient le numéro d’enregistrement du fichier en cours.

awk '
  FNR==1 {sum1 += $1}
  FNR==2 {sum2 += $1; count2++}
  END {print sum1; print (sum2/count2)}
' 1log 2log

ou

paste 1log 2log | {
  read n1 n2; echo $((n1+n2))
  read n1 n2; bc <<< "($n1+$n2)/2"
}
Glenn Jackman
la source
Cela échoue pour moi, peut-être parce que j'ai des fichiers avec des valeurs nulles.
Ken J