我有这样的数据结构
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
andmax
变量设置为第 1 行第 4 列的值,稍后我们将检查第 4 列中的每个值,看看它是否小于min
或大于当前值max
,如果是则设置min
为那价值。
然后我们创建一个sum
变量,其中包含第 4 列所有值的总和。稍后,该变量将用于通过将总和除以总行数来计算平均值。
最后我们打印最大值、最小值和平均值。