AWK,计数变量不return 0
AWK, count variable does not return 0
所以我有一个程序几乎在 Unix/Linux 中完成使用 AWK!我必须 return 计数、总和、最大值、最小值和平均值。该程序在找到数字时起作用。但是,如果没有找到数字并且计数不会迭代......我不会返回 0。我会返回类似“1a2,5”的内容。
这是我的代码,
#! /bin/awk -f
{
sum +=
}
/[0-9]+/{
if (NR >= 1){
if ([=11=] != 0 && NF == 1){
if ([=11=] !~ /[A-Za-z]/){
min = (NR==1 || <min ? : min)
max = (NR==1 || >max ? : max)
mean = sum/NR
count+=1
}
} else if ([=11=] == 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)
}
我 forgetting/needs 是什么要更改的,所以如果没有找到,可以 return 计数为 0。谢谢
#! /bin/awk -f
# Nothing to do
NF > 1 {
next
}
# now [=10=] ==
# Only with numbers
# ~ /^[0-9]+$/ {
# or
~ /^[0-9]+(\.[0-9]+)?$/ {
# exit if zero found
if ( == 0) {
exit 0
}
# compute
sum +=
min = (NR==1 || <min ? : min)
max = (NR==1 || >max ? : 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)
}
所以我有一个程序几乎在 Unix/Linux 中完成使用 AWK!我必须 return 计数、总和、最大值、最小值和平均值。该程序在找到数字时起作用。但是,如果没有找到数字并且计数不会迭代......我不会返回 0。我会返回类似“1a2,5”的内容。 这是我的代码,
#! /bin/awk -f
{
sum +=
}
/[0-9]+/{
if (NR >= 1){
if ([=11=] != 0 && NF == 1){
if ([=11=] !~ /[A-Za-z]/){
min = (NR==1 || <min ? : min)
max = (NR==1 || >max ? : max)
mean = sum/NR
count+=1
}
} else if ([=11=] == 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)
}
我 forgetting/needs 是什么要更改的,所以如果没有找到,可以 return 计数为 0。谢谢
#! /bin/awk -f
# Nothing to do
NF > 1 {
next
}
# now [=10=] ==
# Only with numbers
# ~ /^[0-9]+$/ {
# or
~ /^[0-9]+(\.[0-9]+)?$/ {
# exit if zero found
if ( == 0) {
exit 0
}
# compute
sum +=
min = (NR==1 || <min ? : min)
max = (NR==1 || >max ? : 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)
}