2011-12-18 20 views

cevap

14

deneyin şey:

$ cat input 
1 
2 
3 
4 
5 
6 
2.5 
3.5 
4 
$ awk '{sum+=$1} (NR%3)==0{print sum/3; sum=0;}' input 
2 
5 
3.33333 

(besbelli, 10 hatlı blokları için uygun hale getirin.)

+2

: 'ff 50 | awk '{toplam + = $ 1} (NR% 10) == 0 {baskı toplam/10; toplam = 0;} '' – progo

+0

Hm, benim durumumda çalışmıyor gibi görünüyor. Ondalık değerler üzerinde çalışmamın onunla bir ilgisi olabilir mi? – gablin

+0

@gablin: Yayınladığım ondalık değerler ile iyi çalışıyor. – Mat

1

böyle bir şey olabilir - Eğer istemiyorsanız

[jaypal:~/Temp] seq 20 > test.file 

[jaypal:~/Temp] awk ' 
{sum+=$1} 
(NR%10==0){avg=sum/10;print $1"\nTotal: "sum "\tAverage: "avg;sum=0;next}1' test.file 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
Total: 55 Average: 5.5 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
Total: 155 Average: 15.5 

yazdırılacak tüm satırlar sonra aşağıdaki işe yarar. Bu seq` test girişi uzak soyut `kullanılmış olabilir

[jaypal:~/Temp] awk ' 
{sum+=$1} 
(NR%10==0){avg=sum/10;print "Total: "sum "\tAverage: "avg;sum=0;next}' test.file 
Total: 55 Average: 5.5 
Total: 155 Average: 15.5 
İlgili konular