免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2369 | 回复: 9
打印 上一主题 下一主题

文本合计问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-31 22:57 |只看该作者 |倒序浏览
cat 1.txt
日期 员工代码 金额 产品代码
20070109 5001 2000.00 3554
20070109 5001 4000.00 3524
20070101 5003 3280.00 3554
20070108 5004 6200.00 6001
20070109 5001 4000.00 3524
20070101 5002 1800.00 3554
20070101 5002 4850.00 6224
....
假设在同一天,一个员工,销售若干产品,但当日总销售合计超过5000.00元,
要求提取逐笔具体销售明细记录。

谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-01-31 23:12 |只看该作者

  1. awk '{sum[$1,$2] += $3} END {for (x in sum) if (sum[x] > 5000.0) print x}' file > file.1

  2. awk '
  3. BEGIN {
  4.   i = 0
  5.   while ((getline x < "file.1") > 0)
  6.      a[x] ++
  7. }
  8. {
  9.    if (a[$1,$2])
  10.      print
  11. }' file
复制代码


不知道这样是不是可行

论坛徽章:
0
3 [报告]
发表于 2007-01-31 23:45 |只看该作者
awk -F'|' '{ key = $1 "," $NF; sum[key] += $3; line[key, count[key]++] = $0; }END {for (id in sum) if (sum[id] >= 5000) for (i = 0; i < count[id]; i++) print line[id, i];}' urfile

计算的结果只有大于5000元记录。

论坛徽章:
0
4 [报告]
发表于 2007-02-01 08:52 |只看该作者
http://bbs.chinaunix.net/viewthr ... p;page=1#pid6379782

稍微修改就可以了。

ps: 自己的问题给大家个结果,拜托了。

论坛徽章:
0
5 [报告]
发表于 2007-02-01 19:11 |只看该作者
try
  1. awk -F'|' '
  2. { key = $1 "," $2; sum[key] += $3; line[key, count[key]++] = $0; }
  3. END {
  4.         for (id in sum) if (sum[id] >= 5000) for (i = 0; i < count[id]; i++) print line[id, i];
  5. }' urfile
复制代码

ps: 有问题在帖子里继续讨论

论坛徽章:
0
6 [报告]
发表于 2007-02-01 19:54 |只看该作者

回复 5楼 awk就是awp加ak 的帖子

[root@localhost 13]# awk -f ' ' '{key=$1 "," $2;sum[key]+=$3; line [key,count[key]++]=$0;} END {for (id in sum) if(sum[id] >=5000 for(i=0; i<c}' 111
awk: fatal: can't open source file `{key=$1 "," $2;sum[key]+=$3; line [key,count[key]++]=$0;} END {for (id in sum) if(sum[id] >=5000 for(i=0; i<c}' for reading
(没有那个文件或目录)

论坛徽章:
0
7 [报告]
发表于 2007-02-01 20:22 |只看该作者
大姐,好象不止一次看到这个内容的新帖了吧...

论坛徽章:
0
8 [报告]
发表于 2007-02-01 22:20 |只看该作者
原帖由 sxz001 于 2007-2-1 19:54 发表
[root@localhost 13]# awk -f ' ' '{key=$1 "," $2;sum[key]+=$3; line [key,count[key]++]=$0;} END {for (id in sum) if(sum[id] >=5000 for(i=0; i<c}' 111
awk: fatal: can't open source f ...


因为 -f 和 -F 对于 awk 来说意义是不一样的,还有 for (i=0; i<c} 是怎么回事?

建议拷贝我上面的代码,然后urfile 替换成你自己的文件。

论坛徽章:
0
9 [报告]
发表于 2007-02-02 21:03 |只看该作者

回复 8楼 awk就是awp加ak 的帖子

谢谢,谢谢,终于解决了。

论坛徽章:
0
10 [报告]
发表于 2007-02-02 21:13 |只看该作者
不容易,恭喜
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP