我有一個數據集,看起來像這樣:平均每兩行的所有列的第一個除外
ITEM1 20 30 12
ITEM1 10 50 17
ITEM2 -9 112 15
ITEM2 -9 100 10
實際數據集有101列。我想打印每列中連續值的平均值(除了包含名稱的第一列)。
所以預期輸出將是
ITEM1 15 40 14.5
ITEM2 -9 106 12.5
我從這個link發現,我可以用下面的代碼的單個列要這樣做
awk '{sum+=$2}(NR%2)==0{print sum/2; sum=0;}'
但我無法弄清楚如何做到這一點的其餘列和原理t爲平均值行的唯一行名(例如:item1)。我想是這樣的:
awk '{for(i=2;i<=NF;i++) sum[i]+=$i} NR%2==0 {print sum[i]/2;sum[i]=0}'
但代碼顯然是不正確,我將不勝感激,如果任何人都可以指出我在做什麼錯誤以及如何改進它得到預期result.Thanks!
你知道'NR%2'是一個模運算符,它表示每2行都有一個操作嗎?你想在awk的'END {....}'中執行那個(用模測試)。塊。多看一些其他的例子會讓你在那裏。祝你好運。 – shellter 2013-04-08 19:37:33