字段和列上的 awk 求和加法 $ - 奇怪的结果

awk sum addition math on fields & colums $ - strange results

请运行这个脚本。我想知道为什么我不能在 BEGIN 中分配 $1、$2 和 $3 以计算和打印它们:

    BEGIN {
        OFS=FS=";" ;
        #  @include getopt.awk
    geb = 4;
    dis = 3;
     = 10;
     = 0.19;
     = 20;
    summe = geb+dis+;
    colsum = ++
}
{
    print  FS  FS  FS "Fee" " "summe FS + FS 3+4+ FS colsum}

例如我希望

print +

给我 30 个?! 我不能为字段分配新值吗?

BEGIN 块发生在 awk 开始处理文件之前,因此分配给各个字段没有意义,因为一旦读取第一条记录,它们就会被覆盖。

如果您希望对 awk 读取的记录执行计算,这应该在一个普通块中完成,就像您正在使用的块 print

BEGIN 块在读取任何输入之前执行(除非使用 getline),因此 none 引用输入的变量,如 NRFNRNF[=16=], , ... 等字段将在任何 BEGIN 块中定义。

实际上 BEGIN 块用于在您阅读第一行之前执行的操作

(除非使用 getline)- 不推荐

akshay@db-3325:/tmp$ seq 1 5 >test
akshay@db-3325:/tmp$ cat test 
1
2
3
4
5

# Default action by awk
akshay@db-3325:/tmp$ awk 'BEGIN{print }' test

# if you use getline
akshay@db-3325:/tmp$ awk 'BEGIN{getline;print }' test
1