Bash 使用GN awk计算同一行中的最小值和最大值
我有数据集外观:Bash 使用GN awk计算同一行中的最小值和最大值,bash,awk,max,average,min,Bash,Awk,Max,Average,Min,我有数据集外观: A 10 A 12 A 13 B 10 B 25 B 66 B 80 C 2 C 3 我能够使用AWK计算相同行的平均值(使用数组)。我想在脚本中添加最小值和最大值。有什么想法吗 我的剧本: awk -v OFS="\t" '{v[$1]+=$2; n[$1]++}END {for (l in n) {print l "\t" v[l] / n[l]}}' > out.txt 谢谢你的建议 一种方法可能是再创建两个数组:一个用于最大值,另一个用于最小值。扩展代码: $
A 10
A 12
A 13
B 10
B 25
B 66
B 80
C 2
C 3
我能够使用AWK计算相同行的平均值(使用数组)。我想在脚本中添加最小值和最大值。有什么想法吗
我的剧本:
awk -v OFS="\t" '{v[$1]+=$2; n[$1]++}END {for (l in n) {print l "\t" v[l] / n[l]}}' > out.txt
谢谢你的建议 一种方法可能是再创建两个数组:一个用于最大值,另一个用于最小值。扩展代码:
$ cat foo.awk
{
v[$1]+=$2
n[$1]++
if(min[$1]>$2||min[$1]=="")
min[$1]=$2
if(max[$1]<$2)
max[$1]=$2
}
END {
for (l in n)
print l, v[l] / n[l], min[l], max[l]
}
$ awk -v OFS="\t" -f foo.awk foo.txt
A 11.6667 10 13
B 45.25 10 80
C 2.5 2 3
$cat foo.awk
{
v[$1]+=$2
n[$1]++
如果(最小值[$1]>2 | |最小值[$1]==“”)
最低[$1]=$2
if(max[$1]这段代码应该很容易阅读
$ awk '{k=$1; v=$2; sum[k]+=v; count[k]++}
!(k in min){min[k]=max[k]=v}
min[k]>v{min[k]=v}
max[k]<v{max[k]=v}
END{for(k in sum) print k,min[k],max[k],sum[k]/count[k]}' file |
column -t
A 10 13 11.6667
B 10 80 45.25
C 2 3 2.5
$awk'{k=$1;v=$2;和[k]+=v;计数[k]+}
!(k in min){min[k]=max[k]=v}
min[k]>v{min[k]=v}
max[k]同一列?行中只有一个元素。只需添加更多数组,例如avg[]
、min[]
和max[]
。是的,在同一列中。如果只有一个值,只需为最小值和最大值打印相同的值。假设-D 10-->min=10,max=10。是的,我仍在试图找出如何为最小值和最大值添加数组。仍有一些错误…@Geroge如果您显示您在那里所做的尝试和所得到的错误,问题会更好