awk中的外部输出

时间:2014-10-25 18:56:53

标签: shell printing awk

我正在使用awk解析文件。

BEGIN{FS=":"; PPH = 0; NAME=""}

    NAME=$1;
    PPH=$2;
    PAY=PPH*HOURS;
    {print NAME " " PAY}

END{print "end" }

这是该计划的基本结构。我将其作为

运行
 awk -f file.awk inputfile.dat

我遇到的问题是它会打印每行六次,然后打印出打印NAME和PAY行的内容。我有点困惑,为什么会发生这种情况,因为我只有两条打印线,而且它似乎与输入文件中的行数无关。

1 个答案:

答案 0 :(得分:2)

问题是赋值语句需要是动作的一部分,也就是说,它们需要在第二组花括号内。

BEGIN {FS=":"; PPH = 0; NAME=""}

{
    NAME=$1;
    PPH=$2;
    PAY=PPH*HOURS;
    print NAME " " PAY
}

END {print "end" }

请记住,awk中的所有内容都是一个模式,后跟花括号内的动作。如果省略该操作,则默认操作是打印该行。由于赋值不是大括号,因此它们被解释为模式,评估为true,导致多次打印行。