首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK,count变量不返回0

问AWK,count变量不返回0
EN

Stack Overflow用户
提问于 2021-09-28 13:22:46
回答 1查看 46关注 0票数 0

所以我有一个在Unix/Linux中使用AWK的程序即将完成!我必须返回计数、总和、最大值、最小值和平均值。当找到数字时,程序就会工作。但是,如果找不到数字并且count不迭代...我不能返回0。我得到类似于"1a2,5“之类的结果。这是我的代码,

代码语言:javascript
复制
#! /bin/awk -f

{
sum += $1
}

/[0-9]+/{ 


if (NR >= 1){
    if ($0 != 0 &&  NF == 1){
        if ($0 !~ /[A-Za-z]/){

             min = (NR==1 || $1<min ? $1 : min)
             max = (NR==1 || $1>max ? $1 : max)
             mean = sum/NR

        count+=1  
        }
    } else if ($0 == 0)
    {exit(0)
}
}
  }


END{
printf("# items: %d \n",count)
printf("Total:   %lf\n", sum)
printf("Maximum: %lf\n", max)
printf("Minimum: %lf\n", min)
printf("Average: %lf\n", mean)
}

我忘记了什么/需要更改,这样如果什么都没有找到,count就可以返回0。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-01 08:59:49

代码语言:javascript
复制
#! /bin/awk -f

# Nothing to do
NF > 1 {
    next
}

# now $0 == $1

# Only with numbers
#$1 ~ /^[0-9]+$/ {
# or
$1 ~ /^[0-9]+(\.[0-9]+)?$/ {
    # exit if zero found
    if ($1 == 0) {
        exit 0
    }
    # compute
    sum   += $1
    min    = (NR==1 || $1<min ? $1 : min)
    max    = (NR==1 || $1>max ? $1 : max)
    mean   = sum/NR
    count += 1
}

END {
    printf("# items: %d \n", count)
    printf("Total:   %lf\n", sum)
    printf("Maximum: %lf\n", max)
    printf("Minimum: %lf\n", min)
    printf("Average: %lf\n", mean)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69362557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档