私は次のようなデータ構造を持っています。
X 43808504 G 1 ^]. <
X 43808505 C 3 . 4
X 43808506 T 8 . ?
X 43808507 G 5 . C
4番目の列から最大値(8)、最小値(1)、平均値(4.25)を取得してファイルに書きたいです。
データの並べ替え後に削除しようとしましたが、これは非効率的なようです。
ご協力ありがとうございます
答え1
使用awk
:
awk 'NR == 1 { min = $4; max = $4 }
{
sum += $4
if ($4 > max) {
max = $4
}
if ($4 < min) {
min = $4
}
} END {
print max
print min
print sum / NR
}' input
min
まず、変数を行1列4の値に設定し、後で列4の各値を確認して現在の値より小さいか大きいことを確認max
し、そうである場合は次のように設定します。min
max
min
それ値。
sum
次に、列4のすべての値の合計を含む変数を作成します。後で、この変数は合計を行数で割って平均を計算するために使用されます。
最後に、最大値、最小値、平均値を印刷します。