質問:

質問:

.txtファイル内の特定の列の中央値を計算し、その値を出力し、出力値が正常であることを確認したいと思います。初期ステップを実行して中央値を出力できますが、出力値が許容範囲内にあるかどうかはわかりません。

次のコードを含む構文エラーメッセージが表示されます。

sort -nk9 filename | awk '{a[i++]=$9;} END {x=int((i+1)/2); y=((a[x-1] + a[x])/2); z=(a[x-1]);
if ((y >= 0.5 && y <= 2) || (z >= 0.5 && z <=2));
   {if (x < (i+1)/2) 
   print "Median OR =", y "ALL OK"; 
   else print "Median OR =", z "ALL OK"}; 
else print "ERROR - OR outside range 0.5 - 2.0"}'

ベストアンサー1

私の考えでは、これはあなたが望むものです。

awk '{sum+=$9;a[x++]=$9;b[$9]++}b[$9]>Mode{Mode=$9}END{print "Mean: " sum/x "\nMedian: "a[int((x-1)/2)]"\nMode: " Mode}' file

比較的きれいにまとめられています。

awk '
{
     sum+=$9
     a[x++]=$9
     b[$9]++
}
b[$9]>Mode{Mode=$9}
END{
    print "Mean: " sum/x 
    print "Median: "a[int((x-1)/2)] 
    print "Mode: " Mode
}' file

また、比較にいくつかのロジックを追加したいのですが、変数はx、y、zと呼ばれ、正しい方程式がある場合とない場合があるため、何を比較しているのか実際にはわかりません。

おすすめ記事