免费注册 查看新帖 |

Chinaunix

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

请教:如何在SHELL里面打印+如何在SHELL里面运算减法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-10 12:18 |只看该作者 |倒序浏览
请教:如何在SHELL里面打印+如何在SHELL里面运算减法?

我的短消息话单是:
时间    A发送短消息号码    B接收短消息号码   状态
200306101220 A13011112222  B13911110000 OK
200306101222 A13011112223  B13111110010 OK
200306101323 A13011112222  B13011110030 OK
200306101326 A13111112224  B13511110060 NOK
200306101326 A13111112224  B13311110060 OK
200306101326 A13111112224  B13211110060 OK

为了统计每天成功,失败的发送短消息。
我希望编程输出的文件格式为:
B130OK= 1
B139OK= 1
其他OK= 2
其他NOK=1

我知道,用grep, | , wc  其实就可以算出数据,但是,为了得到以上希望的输出文件格式,我有两个问题;

1.在SHELL里面,如何和grep 出来的结果一起打印出“B130OK="?
2.在SHELL里面,如何用减法,来实现“文件OK总条数-B130OK-B139OK=其他OK”?

论坛徽章:
0
2 [报告]
发表于 2003-06-10 13:33 |只看该作者

请教:如何在SHELL里面打印+如何在SHELL里面运算减法?

awk 'if(substr($3,1,4)=="B130"&&$4=="OK"a+=1
.
.
.
END{printf "B130OK=%2s",a}'

论坛徽章:
0
3 [报告]
发表于 2003-06-10 14:36 |只看该作者

请教:如何在SHELL里面打印+如何在SHELL里面运算减法?

偶给林子补充一下.
awk '{if($4=="OK"{if(substr($3,1,4)=="B130"{tot130+=1}
else if(substr($3,1,4)=="B139"{tot139+=1}
else{tot000+=1}}
else{tot999+=1}}
END{printf "B130OK=%d\nB139OK=%d\nB000OK=%d\nNOK=%d",tot130,tot139,tot000,tot999}' urfile

论坛徽章:
0
4 [报告]
发表于 2003-06-10 15:30 |只看该作者

请教:如何在SHELL里面打印+如何在SHELL里面运算减法?

原帖由 "nkliyong" 发表:
偶给林子补充一下.
awk '{if($4=="OK"{if(substr($3,1,4)=="B130"{tot130+=1}
else if(substr($3,1,4)=="B139"{tot139+=1}
else{tot000+=1}}
else{tot999+=1}}
END{printf "B130OK=%d\nB139OK=%d\nB000OK=%d..........
   
同意~不过还还好只有130-139,要是多的话,就不能这样了,可以用数组,因为AWK里可以用字符串做下标啊,哈哈~~

论坛徽章:
0
5 [报告]
发表于 2003-06-11 10:14 |只看该作者

请教:如何在SHELL里面打印+如何在SHELL里面运算减法?

expr命令可以做一些简单的四则运算.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP