忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1384 | 回复: 5

一个计算问题??? [复制链接]

论坛徽章:
0
发表于 2010-05-24 17:00 |显示全部楼层
我现在有这样一样文件,内容如下:

想实现这个结果:在以下数据在把每天从工号为680-685和686-695的产品数据相加,输了结果如下:

   时间             工号段       当天总产量和   
2010/04/05        680-685               340
  2010/04/05        680-685               340

  2010/04/06        680-685               340
  2010/04/06        680-685               340



    时  间                      工号                                  件数
2010/04/05        1           680                        1           72     
  2010/04/05        1           681                        0           73     
  2010/04/05        1           682                        0           73     
  2010/04/05        1           683                        0           76     
  2010/04/05        1           684                        0           74     
  2010/04/05        1           685                        0           76     
  2010/04/05        1           686                        0           74     
  2010/04/05        1           687                        0           74     
  2010/04/05        1           689                        0           75     
  2010/04/05        1           69                        305           0     
  2010/04/05        1           690                        0           74     
  2010/04/05        1           691                        0           73     
  2010/04/05        1           692                        0           76     
  2010/04/05        1           693                        0           72     
  2010/04/05        1           694                        0           75     
  2010/04/05        1           695                        0           71     
  2010/04/06        1           696                        0           70     
  2010/04/06        1           697                        0           72     
  2010/04/06        1           698                        0           73     
  2010/04/06        1           699                        0           76     
  2010/04/06        1           680                        1           72     
  2010/04/06        1           681                        0           73     
  2010/04/06        1           682                        0           73     
  2010/04/06        1           683                        0           76     
  2010/04/06        1           684                        0           74     
  2010/04/06        1           685                        0           76     
  2010/04/06        1           686                        0           74     
  2010/04/06        1           687                        0           74     
  2010/04/06        1           689                        0           75     
  2010/04/06        1           69                        305           0     
  2010/04/06        1           690                        0           74     
  2010/04/06        1           691                        0           73     
  2010/04/06        1           692                        0           76     
  2010/04/06        1           693                        0           72     
  2010/04/06        1           694                        0           75     
  2010/04/06        1           695                        0           71     
  2010/04/06        1           696                        0           70     
  2010/04/06        1           697                        0           72     
  2010/04/06        1           698                        0           73     
  2010/04/06        1           699                        0           76

论坛徽章:
0
发表于 2010-05-24 17:10 |显示全部楼层
  1. awk 'NR>1&&$3 >=680 && $3<=685{if(a[$1]) a[$1]+=$NF; else a[$1]=$NF}END{for(cnt in a)print cnt,"680-685",a[cnt]}'  file
复制代码

论坛徽章:
0
发表于 2010-05-24 17:29 |显示全部楼层
感谢 lkk2003rty 能讲讲这个语句吗?

论坛徽章:
0
发表于 2010-05-24 17:54 |显示全部楼层
awk '$3>="680"&&$3<="695"{if($3>="680"&&$3<="685"){array[$1"     680-685"]+=$NF}else{array[$1"     686-695"]+=$NF}}END{for(i in array){print i" "array[i]} }' test99.txt

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
发表于 2010-05-24 18:41 |显示全部楼层
  1. awk '{if($3>=680&&$3<=685)a[$1]+=$NF;if($3>=686&&$3<=695)b[$1]+=$NF}END{for(i in a )printf i" 680-685 "a[i]"\n"i" 686-695 "b[i]"\n"}' urfile
复制代码

论坛徽章:
0
发表于 2010-05-24 21:18 |显示全部楼层
NR>1&&$3 >=680 && $3<=685 :判断这一行是不是第一行而且工号为680-685的进行处理
if(a[$1]) a[$1]+=$NF; else a[$1]=$NF :以时间为数组下标 数组内容为产品数据
for(cnt in a)print cnt,"680-685",a[cnt] : 打印数组所有信息

呵呵 没注意看  只统计了工号为680-685的   sorry其他楼的 两个 工号段都统计了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP