免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2295 | 回复: 7

求简洁sed或者awk命令 [复制链接]

论坛徽章:
0
发表于 2009-12-22 17:03 |显示全部楼层

  1. 文件如下
  2. C2*C4  as C1,
  3. ,(a.OUTTRY_NUM+d.PP_REQ)/(e. CALLER_CE_SCC_NUM+a.INTRY_NUM-a.CALLEE_HLR_FAIL)*100 as C2
  4. ,(a.LCALLEE_ANS_NUM+ c.LOC_BUSY_NUM+ c.LOC_NOANS+ c.LOC_REL_ALERT+ c.LOC_REJ_NUM+ c.LOC_AF_NUM)/(a.INTRY_NUM+ a.OUTTRY_NUM2+ a.OTHER_TRY+a.REDREQ_NUM+a.DL_REQ_NOANS- a.OUTTRY_NUM- a.HLR_FAIL_NUM- a.OUTTRY_NUM1- (c.early_rel+c.CALLER_STR_RES+c.ERCALL_NUM+c.LOC_OPER_SUCC))*100 as C3
  5. ,(e. CALLER_CE_REQ_NUM/(e. CALLER_CE_REQ_NUM+e. CALLEE_CE_REQ_NUM)*100)*C7+(1-(e. CALLER_CE_REQ_NUM/(e. CALLER_CE_REQ_NUM+e. CALLEE_CE_REQ_NUM)*100))*C10*C8 as C4
  6. ,(a.INCON_NUM+a.OUTCON_NUM)/(a.INTRY_NUM+a.OUTTRY_NUM)*100 as C5
  7. ,(a.INANS_NUM+a.OUTANS_NUM)/(a.COME_TRY_NUM+a.OUTTRY_NUM)*100 as C6
  8. ,e. CALLER_CE_SCC_NUM/e. CALLER_CE_REQ_NUM*100 as C7
  9. ,C11.7/e. CALLEE_CE_REQ_NUM*100 as C8
  10. ,e. CE_SCC_NUM_ALL/e. CE_REQ_NUM_ALL*100 as C9
  11. ,d.MSC_P_RES/d.MSC_P_NUM*100 as C10
  12. ,e. CE_SCC_NUM/e. CALL_TRY_NUM*100 as C11
  13. ,a.PKG_FAIL_NUM/(a.PKG_NUM+ a.PKG_FAIL_NUM)*100 as C12
  14. ,b.RTP_RPKG_LOST/(b.RTP_RPKG+b.RTP_RPKG_LOST)*100 as C13
  15. ,0 as C14
  16. ,0 as C15

  17. 希望目标内容为grep -o -e "a\.[a-zA-Z_]*" file的结果,
  18. 我用sed写了一个,sed -n '/a\.[a-zA-Z_]/!d;:a;h;s/\(.*\)\(a\.[a-zA-Z_]*\).*/\2/p;x;s/\(.*\)\(a\.[a-zA-Z_]*\).*/\1/;ta'
  19. 写的太复杂了,谁有好点的逻辑?
复制代码


[ 本帖最后由 liying_gg 于 2009-12-22 17:06 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2009-12-22 17:22 |显示全部楼层

回复 #1 liying_gg 的帖子

sed -nr ':a;s/([^\n]+)(a\.\w+)[^\n]*/\1\n\2/;ta;s/[^\n]*\n//p' urfile

btw: 楼主的grep有点小问题,a.OUTTRY_NUM2 后面的数字2应该带出来的。

论坛徽章:
0
发表于 2009-12-22 17:28 |显示全部楼层

回复 #1 liying_gg 的帖子

你这儿是哪来的文件,呵呵。

论坛徽章:
0
发表于 2009-12-22 17:32 |显示全部楼层

回复 #2 ly5066113 的帖子

好,比我的简洁,谢谢指正错误。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2009-12-22 17:33 |显示全部楼层

回复 #3 yazi0127 的帖子

应该是某数据库存储过程中的一段,没有用到什么特别的函数,看不出是什么数据库。

论坛徽章:
0
发表于 2009-12-22 17:33 |显示全部楼层

回复 #3 yazi0127 的帖子

一个哥们儿问我的问题,搞电信的。

论坛徽章:
0
发表于 2009-12-22 17:52 |显示全部楼层
还是用awk最方便
awk -v RS='a\\.\\w*' '{ print RT}' file

sed比较短的可用:
sed 's/a\.\w*/\n&\n/g;' file|sed '/^a\.\w*$/!d;'

论坛徽章:
0
发表于 2009-12-22 18:00 |显示全部楼层

回复 #7 curclew 的帖子

有想法,不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP