awk if-else 中递增变量

awk if-else 中递增变量

我有以下代码:

TOTAL=0
COUNT=0

# a ratio of 10000 indicates that ILP # rejected was 0.
awk -v c=$COUNT -v t=$TOTAL 
'BEGIN  { FS=OFS="," }
NR==1       { $(NF+1)="RATIO" }
NR>1 && NF>3{ if($4==0) $(NF+1)=10000; else {$(NF+1)=$6/$4, c++, t=t+$4} } 
{ print }' "$FILE" > temp.log

AVG=$(($TOTAL/$COUNT))

太长了;我有一个包含字段的文件,并且我正在向每一行添加一个新字段。在这种else情况下,我想增加我的外部变量ct

我收到的错误是syntax error指向紧接在 之前的逗号c++

我读过一些其他的答案它确实使用了这个逗号语法,所以我想知道如何解决这个问题。

答案1

除了这个问题之外指出在评论中:

逗号用于分隔参数 - 要分隔语句,您需要分号; (或换行符)。参见示例(分号),分隔动作中的语句

你不需要初始化全部的数数shell 中的变量,也不能轻松更新它们的值awk;相反,让awk为您计算 AVG,尝试:

awk 'BEGIN  { FS=OFS="," }
NR==1       { $(NF+1)="ratio" }
NR>1 && NF>3{ if($4==0) $(NF+1) =10000; else { $(NF+1) =$6/$4; count++; total+=$4 } }
{ print }
END{ if(count) print "AVG: " total/count }' infile

相关内容