Bash Jumlah angka rata-rata dalam file

0

Saya memiliki serangkaian file dengan 2 (dua) baris. Baris pertama berisi angka bulat (1-100) sedangkan baris kedua berisi angka desimal (1,0000-99,9999). Saya perlu mendapatkan jumlah dari baris pertama dan rata-rata dari baris kedua, yaitu:

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

Contoh:

 1log
     20
     4.2
 2log
     34
     1.2

Di mana output akan terlihat seperti ini:

 54
 2.7
Ken J
sumber

Jawaban:

0

Dengan awk, gunakan FNR variabel, yang menyimpan nomor rekaman file saat ini.

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

atau

paste 1log 2log | {
  read n1 n2; echo $((n1+n2))
  read n1 n2; bc <<< "($n1+$n2)/2"
}
glenn jackman
sumber
Ini gagal bagi saya, mungkin karena saya memiliki beberapa file dengan nilai nol.
Ken J