2013/3/19 Ahmet ARAS <[email protected]>:
> Mucibirahman Bey ,
> Ekte  adet txt dosyası gönderiyorum. Birincisi ana dosyamız . İkincisi ise
> dakikaların toplanarak ortalamanın bulunduğu ve saatlik bilgiler
> Yapmak istediğim iş ise ; 10 dak bilgi bulunan bir dosya da her 10 dak bir
> gelen bilgileri toplayarak saatlik değerleri bulmaya çalışıyorum.
> yeni oluşacak dosya daki kayıtlarda ekteki  .txt gibi olacak.En büyük
> sıkıntım ise 1 saatlik dilim içinde bazen 5 adet 10 dakikalık bilgi var
> bazende 3 v.s. gibi yani 1 saat içinde 6 adet 10 dak olsa sonuç alıyorum ama
> 6 adetden az olunca problem çıkıyor.
>
> İyi Akşamlar
> Ahmet
>

Merhaba,

Eger ne soylediginizi dogru olarak anlayabilmissem ne mutlu
bana :) Awk scripti icin biraz uzun oldu ama yine de bir deneyin.

awk '
BEGIN {
    SAAT_COL = 5
    G_COL    = 7
    SEP_CHAR = "-"
}

function print_header() {
    for ( i = 1; i <= NF; i++ )
        printf("%s\t", $i);
    printf("ort\n");
    for ( i = 1; i <= (NF + 1) * 8; i++ )
        printf("%s", SEP_CHAR);
    printf("\n");
}

function print_existing_columns() {
    for ( i = 1; i <= NF; i++ )
        printf("%d\t", $i);
}

function print_avg(avg) {
    printf("%f\n", avg);
}

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

        if (existing_cols_printed == 0) {
            print_existing_columns()
            existing_cols_printed = 1
        }

        if (s4 == s4_prev) {
            ++num_s4;
        } else {
            print_avg(total / num_s4);
            num_s4 = 1
            total = 0;
            existing_cols_printed = 0
        }
        total += $G_COL;
    } else {
        print_header()
    }
}
END {
    print_avg(total / num_s4);
}'
_______________________________________________
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