为什么变量未在此BEGIN中正确初始化?

Man*_*oon -1 awk

在这个gawk中,似乎在BEGIN语句中忽略了ave = $ 4.看来ave在第一行的正文中的值为0:

cat trades.txt | gawk 'BEGIN{pos=0;ave=$4} {pos+=$3;ave=(0.1*$4)+(0.9*ave)} {print $2,pos,$4,ave}' > onPositions.txt
Run Code Online (Sandbox Code Playgroud)

jas*_*jas 5

BEGIN在读取任何数据之前运行该块.如果你想在阅读第一条记录后一次做一些特别的事情:

NR == 1 { ... init code here ... }
Run Code Online (Sandbox Code Playgroud)