Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用GN awk计算同一行中的最小值和最大值_Bash_Awk_Max_Average_Min - Fatal编程技术网

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如果您显示您在那里所做的尝试和所得到的错误,问题会更好