亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: awk類似于excel中的sum函數(shù)對(duì)列進(jìn)行統(tǒng)計(jì)求和的代碼哪里錯(cuò)了,請(qǐng)指教。 [打印本頁(yè)]

作者: Ienovo_qq    時(shí)間: 2013-09-11 16:27
標(biāo)題: awk類似于excel中的sum函數(shù)對(duì)列進(jìn)行統(tǒng)計(jì)求和的代碼哪里錯(cuò)了,請(qǐng)指教。
文件如下:
A01 維護(hù)    30  16  9   3  2  30  30  16  9   3  
A02 優(yōu)化    14  6   1   0  7  14  14  6   1   0  
A03 監(jiān)控    4   0   3   0  1  4   0   4   0   3  
A09 建設(shè)    6   3   0   0  3  6   0   6   3   0  
想在最后填一行合計(jì)輸出為
A01 維護(hù)    30  16  9   3  2  30  30  16  9   3
A02 優(yōu)化    14  6   1   0  7  14  14  6   1   0
A03 監(jiān)控    4   0   3   0  1  4   0   4   0   3
A09 建設(shè)    6   3   0   0  3  6   0   6   3   0
TOTAL 合計(jì) 54        25        13        3         13        54        44        32        13        6
即從第3列開(kāi)始至列12進(jìn)行分列統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果放在最后一行。
以下為我寫(xiě)的代碼
gawk "BEGIN{for (n=3;n<=12;n++) sum(n)=0;b=\"\"}{for (n=3;n<=12;n++) sum(n)+=$n,b=b\" \"sum(n);print $0}END{print \" TOTAL\" , \" 合計(jì)\",b}" #txt
結(jié)果在sum(n)+=$n,b=b\" \"sum(n)之間的逗號(hào)出現(xiàn)如下錯(cuò)誤
syntax error
請(qǐng)問(wèn)哪里出錯(cuò)了?
作者: 關(guān)陰月飛    時(shí)間: 2013-09-11 16:35
sum[n]+=$n  
作者: dn833    時(shí)間: 2013-09-11 16:44
  1. awk '{for(i=3;i<=NF;i++)a[i]+=$i;print $0}END{printf "TOTAL heji ";for(j=3;j<=NF;j++)printf a[j]" ";print ""}'
復(fù)制代碼

作者: Ienovo_qq    時(shí)間: 2013-09-11 16:55
回復(fù) 2# 關(guān)陰月飛


   
請(qǐng)看圖片,實(shí)際的代碼是sum[n]+=$n。
作者: 關(guān)陰月飛    時(shí)間: 2013-09-11 17:07
回復(fù) 4# Ienovo_qq


{for (n=3;n<=12;n++) sum(n)+=$n,b=b  這里應(yīng)該是" ; " 號(hào)

你這個(gè)代碼就別折騰了,用樓上的吧。  
作者: Ienovo_qq    時(shí)間: 2013-09-11 17:10
回復(fù) 3# dn833


    經(jīng)測(cè)試,能實(shí)現(xiàn)要求,多謝。這段代碼能否解釋一下,不是很明白 for(j=3;j<=NF;j++)printf a[j]" ";print ""}
作者: cao627    時(shí)間: 2013-09-11 17:14
本帖最后由 cao627 于 2013-09-11 17:16 編輯

gawk 'BEGIN{for (n=3;n<=12;n++) sum[n]=0}{b="";for (n=3;n<=12;n++) {sum[n]+=$n;b=b"  "sum[n]};print $0}END{print " TOTAL  合計(jì)"b}' #txt

實(shí)在要用你的意思就用上面的。
紅色部分可要可不要
藍(lán)色的b=""是必須的,否則你的b就一串很長(zhǎng)的數(shù)字了。
@Ienovo_qq


作者: reyleon    時(shí)間: 2013-09-11 17:17
本帖最后由 reyleon 于 2013-09-11 17:19 編輯
  1. awk '{for(i=3;i<=NF;i++)a[i]+=$i;print}END{printf "Total 合計(jì)";for(i=3;i<=NF;i++)printf a[i] OFS;printf RS}' file
復(fù)制代碼
搞錯(cuò)了
作者: Ienovo_qq    時(shí)間: 2013-09-11 18:09
回復(fù) 7# cao627


    多謝多謝,算是明白了一點(diǎn) for 后面的語(yǔ)句如有多條,要用{}括起,又學(xué)了一招。
作者: dn833    時(shí)間: 2013-09-12 09:08
回復(fù) 6# Ienovo_qq


    其實(shí)寫(xiě)i寫(xiě)j都一樣啦完全是個(gè)人習(xí)慣而已~~~~就是最后再通過(guò)for循環(huán)提取出數(shù)組中的每個(gè)值而已~剩下的printf我覺(jué)得對(duì)lz來(lái)說(shuō)應(yīng)該不成問(wèn)題的。
作者: Ienovo_qq    時(shí)間: 2013-09-12 17:21
for(j=3;j<=NF;j++)printf a[j]" ";print ""}不是i和j的問(wèn)題,是我沒(méi)搞懂各列的和為何輸出在同一行上,看了reyleon的代碼算是搞懂了。for(i=3;i<=NF;i++)printf a[i] OFS; 妙在這個(gè)OFS上,多謝各位耐心指點(diǎn),收益非淺。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2