亚洲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
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)陰月飛
QQ截圖20130911160435.jpg
(16.1 KB, 下載次數(shù): 71)
下載附件
2013-09-11 16:53 上傳
請(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 編輯
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