免费注册 查看新帖 |

Chinaunix

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

特急!求大侠和大虾们一起来帮忙解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-13 19:37 |只看该作者 |倒序浏览
cat xxx|awk -f ./de.awk >>dermb.txt
de.awk如下:
BEGIN{t1=0;t2;w1=0;w2=0}
{
for $1 in 02 03 04 05 06 07  09  18 26
     {
       case b in sunstr($2,5)
            001: {t1+=$2;t2+=$3}
            014: {w1+=$2*2;w2+=$3*2}
            015: {w1+=$2*3;w2+=$3*3}
            016: {w1+=$2*4;w2+=$3*3}
       printf("%2s,%.2lf,%.2lf,%.2lf,%.2lf\n",i,t1/100,t2/100,w1/100,w2/100")
     }
done
}
xxx的数据如下:
地区      帐号          余额     日均     
02       abcd001     120.00   100.00
03           efgh001     100.00    180.00
03           qqqq014      99.00      88.00
04           cgef016        200.00   888.00
最后输出的结果要求如下
地区   余额,日均(帐号后三位001的金额累计) 余额,日均(帐号后三位不是001的各金额累计)
因为xxx文本有很多,所以最好通过一个统一的de.awk来处理,便于修改。

不知道我的程序错在哪里?或者有哪位高手能够写一个比较好的shell?
急死了,刚学,忙了一天都没搞定,真笨郁闷。

论坛徽章:
0
2 [报告]
发表于 2006-12-14 09:58 |只看该作者
这是awk 脚本啊!
try this:

  1. awk '
  2. {
  3.         rate = substr($2, 5) - 0;
  4.         if (rate == 16) rate = 4;
  5.         else if (rate == 15) rate = 3;
  6.         else if (rate == 14) rate = 2;
  7.        
  8.         sum1[$1] += $3 * rate;
  9.         sum2[$1] += $4 * rate;
  10. }
  11. END {
  12.         for (area in sum1) printf("Area %s: %f, %f\n", i, sum1[area], sum2[area]);
  13. }' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-16 16:35 |只看该作者
呵呵,谢谢
每次发帖都是楼上的解决的
莫非楼上的就是传说中的好心人?

论坛徽章:
0
4 [报告]
发表于 2006-12-23 15:48 |只看该作者
再问一下,如果$1是个25位的字符串,放在数组中会不会报错呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP