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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3538 | 回復(fù): 10
打印 上一主題 下一主題

請(qǐng)教shell求和方法 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-04-17 16:54 |只看該作者 |倒序?yàn)g覽
有一個(gè)文件cat abc
1 10
3 20
1 50
5 20
20 46
5  40


想實(shí)現(xiàn)這樣的功能:
第一列按照1 3 5 10 20 排序,第二列進(jìn)行求和.
如果第一列的值不存在,則第二列補(bǔ)充為0.
即最后想要的的結(jié)果是:

1 60
3 20
5 60
10 0
20 46

請(qǐng)教怎么解決?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-04-17 17:38 |只看該作者
回復(fù) 1# lvyuancyx


    請(qǐng)問(wèn) 一下! 在你第一列中沒(méi)有的數(shù)字,你問(wèn)什么還要加入!

  我這寫了個(gè)第一列沒(méi)有10的:

echo '1 10
3 20
1 50
5 20
20 46
5  40'|awk '{a[$1]+=$2}END{for(i in a)print i"\t"a}'|sort -n -k 1
1       60
3       20
5       60
20      46

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-04-17 17:51 |只看該作者
本帖最后由 lvyuancyx 于 2011-04-17 18:04 編輯

回復(fù) 2# db2-zhang


    因?yàn)榻y(tǒng)計(jì)數(shù)據(jù)中需要10的數(shù)據(jù),可能在某一天里卻沒(méi)有這個(gè)10的數(shù)據(jù).所以要填成0.

我寫了一個(gè)但是不夠精簡(jiǎn),所以想求更好的方法

for val in 1 3 5 10 20
do
awk '{print $1}' abc |grep -w $val >/dev/null 2>&1
if [ $? -eq 0 ];then
awk -v vv=$val  '{if($1==vv){a[$1]+=$2}}END{for(i in a) print i,a}' abc
else
echo $val 0
fi
done

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [報(bào)告]
發(fā)表于 2011-04-17 19:45 |只看該作者
回復(fù)  db2-zhang


    因?yàn)榻y(tǒng)計(jì)數(shù)據(jù)中需要10的數(shù)據(jù),可能在某一天里卻沒(méi)有這個(gè)10的數(shù)據(jù).所以要填成0.
...
lvyuancyx 發(fā)表于 2011-04-17 17:51



$ echo '1 10
3 20
1 50
5 20
20 46
5  40' | perl -lane 'BEGIN{$h{$_}=0 for(1,3,5,10,20)}{$h{$F[0]}+=$F[1]}END{for(sort{$a<=>$b}keys %h){print "$_\t$h{$_}"}}'
1        60
3        20
5        60
10        0
20        46

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [報(bào)告]
發(fā)表于 2011-04-17 22:19 |只看該作者
本帖最后由 jason680 于 2011-04-18 11:10 編輯

只用awk的來(lái)實(shí)現(xiàn),難真累人....
$ echo '1 10
3 20
1 50
5 20
20 46
5 40 ' |awk 'BEGIN{a["01"]=a["03"]=a["05"]=a[10]=a[20]=0}
{a[sprintf("%02s",$1)]+=$2}
END{n=asorti(a,s);for(t=1;t<=n;t++)printf("%d\t%s\n",s[t],a[s[t]])}'
1        60
3        20
5        60
10        0
20        46

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
6 [報(bào)告]
發(fā)表于 2011-04-17 22:39 |只看該作者
  1. awk '{a[$1]+=$2;b[$1]=$1;}END{x=asort(b);for(i=1;i<=x;i++)print b[i],a[b[i]]}'
復(fù)制代碼

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
7 [報(bào)告]
發(fā)表于 2011-04-18 01:38 |只看該作者
回復(fù) 1# lvyuancyx
  1. echo "1 10
  2. 3 20
  3. 1 50
  4. 5 20
  5. 20 46
  6. 5  40" |awk 'NF==2{a[$1]+=$2;next}{print $1,a[$1]?a[$1]:"0"}' - <(echo "1
  7. 3
  8. 5
  9. 10
  10. 20")
  11. 1 60
  12. 3 20
  13. 5 60
  14. 10 0
  15. 20 46
復(fù)制代碼

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
8 [報(bào)告]
發(fā)表于 2011-04-18 09:08 |只看該作者
這個(gè)就應(yīng)該用蠻力解決,別為了一個(gè)特殊情況考慮算法
,直接把第一列必須有的數(shù)字追加到文件里,
然后就是求和了

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2011-04-18 10:55 |只看該作者
同意樓上的...

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
10 [報(bào)告]
發(fā)表于 2011-04-18 10:56 |只看該作者
學(xué)習(xí)學(xué)習(xí)!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP