Öncelikle ilgilenerek cevap vermek için zaman ayırdığınız için teşekkür ederim
Elimde n1.txt dosyası var.1-Bu dosya içindeki a) sira no yil ay
gun zam dak deg1 ve deg değişkenleri yerinede ort hesaplıyarak yeni
oluşturulacak dosyaya yazılacak
b) zam değişkenini alt alta bazen 5 bazen altı bazende 3 satırdan oluşuyor .
bu nedenle zam değişkeni kontrol edilerek eğer 1 ise deg2 leri kendi arasında
toplayacak ve a maddesinde ki satırın sonuna ortalama değerini yazacakyani ;no
sira no yil ay gun zam ort 1 1821 12 11 01
1 235 " (210+220+230+240+250+260)/6
"7 1821 12 11 01 2 290
zam sütünün bazen 6 banzen 4 bazen de 8 gibi sürekli satır
sayısı değişiyor.
n1.txt bitinceye kadar bu şekilde devam etmesini istiyorum .
n1.txtno sira no yil ay gun zam dak deg1 deg2 1
1821 12 11 01 1 00 20 2102 1821 12
11 01 1 10 21 2203 1821 12 11 01
1 20 22 2304 1821 12 11 01 1 30
23 2405 1821 12 11 01 1 40 24 2506
1821 12 11 01 1 50 25 2607 1821 12
11 01 2 00 26 2708 1821 12 11 01
2 10 27 2809 1821 12 11 01 2 20
28 29010 1821 12 11 01 2 50 31 32011
1821 12 11 01 3 00 32 33012 1821 12
11 01 3 10 33 34013 1821 12 11 01
3 20 34 35014 1821 12 11 01 3 30
35 36015 1821 12 11 01 3 40 36 37016
1821 12 11 01 4 10 38 39017 1821 12
11 01 4 20 39 40018 1821 12 11 01
4 30 40 41019 1821 12 11 01 4 40
41 42020 1821 12 11 01 4 50 42 43021
1821 12 11 01 4 00 43 44022 1821 12
11 01 5 10 44 45023 1821 12 11 01
5 20 45 46024 1821 12 11 01 5 30
46 47025 1821 12 11 01 5 40 47 48026
1821 12 11 01 5 50 48 49027 1821 12
11 01 6 00 49 50028 1821 12 11 01
6 10 50 51029 1821 12 11 01 6 20
51 52030 1821 12 11 01 6 20 51 520
> Date: Sat, 16 Mar 2013 00:36:58 +0200
> From: [email protected]
> To: [email protected]
> Subject: [Linux-programlama] Re: awk ile ortalama bulma
>
> 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
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php