我在使用awk計算特定的文本標識符列中的特定數字的平均值時遇到了麻煩。我有兩列數據,我試圖開始平均鍵入一個重複的公共標識符,即01/1991。因此,awk應該計算從1991年1月1日開始的所有行的平均值,重複使用下一行21行,總行數爲平均值= 22,總計1991 - 2012年。所需的輸出,平均每個文本ID /名稱條目的所有月份的(01)爲每年1991年至2012年顯示如下:Awk Calc平均行低於某些行
文本ID /名稱1 均價:50.34 文本ID /名稱2 均價:45.67 TEXTID /名稱3 平均:39.97 ...
樣本數據:
TextID/Name 1
01/1991, 57.67
01/1992, 56.43
01/1993, 49.41
..
01/2012, 39.88
TextID/Name 2
01/1991, 45.66
01/1992, 34.77
01/1993, 56.21
..
01/2012, 42.11
TextID/Name 3
01/1991, 32.22
01/1992, 23.71
01/1993, 29.55
..
01/2012, 35.10
continues with the same data for TextID/Name 4
我得到使用此代碼的答案如下所示,但平均開始以計算特定標識符行之前和不在該線以下(01/1991)。
awk '$1="01/1991" {sum+=$2} (NR%22==0){avg=sum/22;print"Average: "avg;sum=0;next}' myfile
感謝和解釋的解決方案,非常感謝!我用更多描述編輯了原始答案 - 再次感謝你。
我覺得你想'awk'$ 1 ==「....'。'$ 1 =」xxx「'分配給字段1。祝你好運。 – shellter 2013-02-22 21:55:24
感謝您的回覆,但是當我計算所有零時的平均值 – user2100039 2013-02-22 21:59:27
關於'$ 1 =「01/1991」的另一件事是,因爲它是一個賦值,它將始終爲真,並且所有記錄都將處理'sum + = $ 2'。如果你充實了你的現在我們不知道爲什麼你選擇了22(我可以猜到),更重要的是,我們不知道你想要的輸出,也沒有你現有輸出的真實圖像,或者你可以添加一些打印語句所有的變量都可以自己調試問題,祝你好運。 – shellter 2013-02-22 22:49:25