我正在使用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行的内容。我有点困惑,为什么会发生这种情况,因为我只有两条打印线,而且它似乎与输入文件中的行数无关。
答案 0 :(得分:2)
问题是赋值语句需要是动作的一部分,也就是说,它们需要在第二组花括号内。
BEGIN {FS=":"; PPH = 0; NAME=""}
{
NAME=$1;
PPH=$2;
PAY=PPH*HOURS;
print NAME " " PAY
}
END {print "end" }
请记住,awk中的所有内容都是一个模式,后跟花括号内的动作。如果省略该操作,则默认操作是打印该行。由于赋值不是大括号,因此它们被解释为模式,评估为true
,导致多次打印行。