2013/3/15 Ahmet ARAS <[email protected]>:
> Merhaba Linux da yeniyim
>
> Elimde aşağıdaki şekilde bir dizin var ve bu dizini bir sütününün  bir döngü
> ile ortalamalarını bulmak istiyorum
> awk komutu ile ortalamayı buluyorum  ama döngüyü bir türlü kuramadım Bu
> konuda desteklerinizi bekliyorum.
>
> Ortalamayı aşağıdaki komut ile yapabiliyorum ama  döngüyü  oluşturuken
> sürekli hata veriyor.
> awk '{toplam += $6; sayi++} END {print toplam, sayi, toplam/sayi}' n1.txt
>
> n1 dosyası içindeki s4  sütünündaki 6 adet 01 satırına göre s6 toplasın ve
> s4 bölsün
> Yani (200+500+600+300+100+800)/6
> Sonra yine s4 satırındaki 5 adet s4 satırına bakarak yine s6 toplasın
> (200+300+400+500+600)/5
> bütün dosya sonuna kadar s4 bazen 4 bazen 7 bazen 3 satı bunlara göre
> ortalamaları alarak yeni bir dosyaya sonuçları alt alta almasını istiyorum
> Fakat burada n1.txt dosya daki toplam satır sayısını bilmiyorum dosya
> bitince döngüde bitmiş olsun.
>
> n1.txt dosyası ise
> s1      s2       s3     s4       s5      s6
> 12      02      01      01      10      200
> 12      02      01      01      20      500
> 12      02      01      01      30      600
> 12      02      01      01      40      300
> 12      02      01      01      50      100
> 12      02      01      01      59      800

Merhabalar,

Elde etmek istediginiz seyi tam olarak anlayamadigim icin
soyle bir hesaplama yapacaginizi varsaydim, umarim isinizi
gorur.

Kolay gelsin.

awk '
{
    if (NR > 1) {
        if (length(s4) != 0) {
            s4_prev = s4;
        } else {
            s4_prev = $4;
        }
        s4 = $4;

        if (s4 == s4_prev) {
            s4_sum += s4;
        } else {
            printf("ortalama = %f\n", total / s4_sum);
            s4_sum = s4;
            total = 0;
        }
        total += $6;
    }
}
END {
    printf("ortalama = %f\n", total / s4_sum);
}'
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap