我正在尝试做一个非常简单的awk脚本练习,并且不知道为什么它不工作。Linux shell脚本 - 简单的awk脚本问题
的awk脚本应该被用来与2012 begining只显示条目,所以给出下面的输入文件:
2009 Dec X 29.44
2009 Dec Y 32.32
2012 Jan X 321.11
2012 Feb Y 1.99
2012 Feb X 32.99
2012 Mar X 11.45
2010 Jan X 14.75
2011 Feb Y 21.00
2011 Mar X 7.77
输出应该如下:
% awk -f awkscriptfile inputfile
Data for year 2012
==================
Jan : 321.11
Feb : 1.99
Feb : 32.99
Mar : 11.45
===================
volume for 2012 is: 367.54
4 records processed
%
不过,我得到的是:
% awk -f awkscriptfile inputfile
Data for year 2012
==================================
2009 Dec X 29.44
2009 Dec Y 32.32
2012 Jan X 321.11
Jan : 321.11
2012 Feb Y 1.99
Feb : 1.99
2012 Feb X 32.99
Feb : 32.99
2012 Mar X 11.45
Mar : 11.45
2010 Jan X 14.75
2011 Feb Y 21.00
2011 Mar X 7.77
==================================
volume for 2012 is: $sum
$count records processed
%
所以awk脚本是obvio我们打印的数量比应该多,并且出于某种原因,总和和变量变量没有被打印出来。
这是我的awk脚本代码:
BEGIN {
print "Data for year 2012"
print "=================================="
count = 0
sum = 0
}
$1 ~ /2012/ {
print $2, " : ", $4
count++
sum += $4
}
END {
print "=================================="
print "volume for 2012 is: $sum"
print "$count records processed"
}
一切从我在寻找,以供参考,我看不出有任何理由为什么这个代码不应该工作。希望别人能告诉我我做错了什么。
,准确的输入,准确的剧本都没有做,在这里。你确定这是你正在使用的**剧本**吗?因为这看起来很像输出,你会得到一个杂乱的真实-y模式或调试'{print}'动作。 – 2014-10-27 16:58:26
另外,您不要在变量上使用'$',并且它们不会插入字符串中。因此,最后两行希望成为2012年的“打印”卷:“sum”和“print count”记录已处理“'。 – 2014-10-27 17:00:52
我实际上在脚本的开头用“//”而不是“#”开始注释,并且改变它似乎已经修复了它。我以为两个都使用shell脚本,但我猜不。你提供的变量修正当然也起作用。非常感谢! – aredscout 2014-10-27 17:10:27