我正在嘗試做一個非常簡單的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