Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2044925
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-05-09 10:07:07


侠客




CU编号: 1482771
注册:2009-4-25
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:03 
很简单的问题

要分析的文件:
cat 20090508data
1|2
1|3
2|3
3|3
4|3
4|4
1000000|1


左边是一个数,右边是值。要求统计每个数的总和。

即:
1:5
2:3
3:3
4:7
1000000:1

我的程序是:

#!/bin/awk -f
#Fri May  8 18:32:59 CST 2009
#analysis20090508data

BEGIN {
FS="|"
}

{
        array1[$1]+=$2
}
END {
        for(i in array1)
        {
        print i":"array1
        }
        #print array1[1]===这个是用来测试的
}

使用awk -f analysis20090508data 20090508data
来执行,结果居然是:


4:7
1000000:1
1:5
2:3
3:3

就是说并没有排序。求问,是为什么呢?大能请指点一下。谢谢!



您对本贴的看法:
| |

侠客




CU编号: 1482771
注册:2009-4-25
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:11 
居然还没有回答?悲剧啊。:lol: :em16:



您对本贴的看法:
| |
(狼烟)
精灵王
披着狼皮的羊



CU编号: 547805
注册:2007-4-5
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:15 
awk数组排序方式与STLmap不同,下午在另一个帖子刚回过…… - -
加个sort管道吧。



您对本贴的看法:
| |

风云使者




CU编号: 692772
注册:2008-4-16
最后登录: 2009-05-09
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:19 
自己搞个排序算法上去



您对本贴的看法:

__________________________________

GNU sed 版本 4.1.5   
GNU awk 3.1.5
grep 2.5.1
http:://justlooks.8800.org
三个月内一定要找到工作.......
b20c68726c6421686f20776f6848656c6c89e16301b004cd80b00131dbcd80
| |

侠客




CU编号: 1482771
注册:2009-4-25
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:20 


QUOTE:
原帖由 kwokcn 于 2009-5-8 19:15 发表
awk数组排序方式与STLmap不同,下午在另一个帖子刚回过…… - -
加个sort管道吧。

大能来了。大好:mrgreen:

是这个帖子么?




您对本贴的看法:
| |
(狼烟)
精灵王
披着狼皮的羊



CU编号: 547805
注册:2007-4-5
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:24 


QUOTE:
原帖由 laohuanggua 于 2009-5-8 19:20 发表



大能来了。大好:mrgreen:

是这个帖子么?


晕,我也是菜鸟……
如果数据量不大:
awk -f analysis20090508data 20090508data | sort -t: -k1n
如果数据量大,对内存占用量有要求,同时需要排序,就自己写个排序算法好了。

[ 本帖最后由 kwokcn 于 2009-5-8 19:28 编辑 ]



您对本贴的看法:
| |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-05-08
帖子:
精华:0







来自:长春
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 19:45 
回复 #1 laohuanggua 的帖子

如果文件本身就是排好序的,那么用awk直接累加就可以了,不需要用数组。



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| |
  帅哥
精灵王




CU编号: 690903
注册:2008-4-13
最后登录: 2009-05-09
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-5-8 19:45 
回复 #1 laohuanggua 的帖子

awk -F\| '{a[$1]=a[$1]+$2}END{for(i in a)printf i":"a"\n"}' urfile | sort -k1n



您对本贴的看法:
| |
阅读(535) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~