2016-05-25 2 views
-3

Скажем, у меня есть три столбца данных в файле data.dat (XAxis, YAxis и yerror)Binning столбец данных с errorbars использованием AWK

1 21.0 0.1 
2 22.0 0.2 
3 23.0 0.1 
4 24.0 0.2 
5 25.0 0.1 
6 26.0 0.2 

Я хотел бы бен вышеприведенные данные с сказать binwidth = 2 и создать файл data2.dat, который выглядит следующим образом:

1.5 21.5 0.15 
3.5 23.5 0.15 
5.5 25.5 0.15 

есть ли AWK один лайнер, который может сделать выше эффективно. Я совершенно новичок в awk, поэтому некоторые комментарии, указывающие в правильном направлении, также будут полезны.

Я нашел этот ответ полезным: он выполняет эту работу. https://stackoverflow.com/a/18650198/2047639

+4

Пожалуйста, прочтите [просить], затем [править] Ваш вопрос, чтобы включить вашу попытку и описать проблемы вы испытываете пытается решить вашу проблему. –

+0

Есть книги и онлайн-уроки на 'awk'. Я не понимаю, как мы можем указать вам в любом другом направлении. Единственное, что мы могли бы сделать, это написать это для вас. – Barmar

+0

Полагаю, я просто ленился ... Тем не менее, исследование немного больше привело меня к ответу. Я отредактировал свой вопрос соответственно .. Спасибо. Урок выучен. – gforce89

ответ

1

Хотя это может быть не лучший способ сделать это, я хотел бы дать вам некоторые рекомендации:

awk -v var=2 'BEGIN{count=var;c1=c2=c3=0;} #code executed only at the beginning of the script 
    { # This block is applied to all the records which by default is a line 
    if(count>0){ #notice the c style if 
    c1+=$1;c2+=$2;c3+=$3; #again c style increment 
    count-- 
    } 
    else{ 
    printf "%-3s %5s %5s\n",c1/var,c2/var,c3/var # Again notice any similarity with c? 
    count=var; 
    c1=$1;c2=$2;c3=$3 
    count--; 
    } 
    } 
    END{ #This block will be executed only after processing all the records 
    printf "%-3s %5s %5s\n",c1/var,c2/var,c3/var 
    }' yourfile 

Опция -v помогает передать переменную из переменных оболочки или пользовательские переменные в AWK ,

Выход

1.5 21.5 0.15 
3.5 23.5 0.15 
5.5 25.5 0.15 

Полное руководство по программированию AWK доступна на [ GNU Website ].

Примечание: я передал бен ширину, используя var

Смежные вопросы