2016-05-25 9 views
-3

は、私は、ファイルDATA.DAT(x軸、y軸およびYERROR)内のデータの3つの列があると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 

私が持つ上記のデータは、ビン幅を言うビンたいです= 2と次のようであるdata2.datファイル を作成:

1.5 21.5 0.15 
3.5 23.5 0.15 
5.5 25.5 0.15 

は、効率的に上記の操作を行うことができますawkの1つのライナーがあります。 私は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

関連する問題