所以我有一个在Unix/Linux中使用AWK的程序即将完成!我必须返回计数、总和、最大值、最小值和平均值。当找到数字时,程序就会工作。但是,如果找不到数字并且count不迭代...我不能返回0。我得到类似于"1a2,5“之类的结果。这是我的代码,
#! /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。谢谢
发布于 2021-10-01 08:59:49
#! /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)
}https://stackoverflow.com/questions/69362557
复制相似问题