我有以下代码:
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
情况下,我想增加我的外部变量c
和t
。
我收到的错误是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