免费注册 查看新帖 |

Chinaunix

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

求组awk的处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-30 15:37 |只看该作者 |倒序浏览
有一文件有如下数据
  1. public A: public n1::n2::B {
复制代码
现在我想要取得下面的输出格式,请问应该怎么写
  1. child=A namespace=n1::n2:: father=B
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-11-30 15:49 |只看该作者
awk -F '[ :]' '{print "child="$2,"namespace="$5"::"$7"::","father="$9}' d

论坛徽章:
0
3 [报告]
发表于 2010-11-30 15:57 |只看该作者
awk '{sub(/public /,"child=";sub(/public /,"namespace=";print gensub(/(.*:([^ ]+)/,"\\1 father=\\2",'g',$0)}'

论坛徽章:
0
4 [报告]
发表于 2010-11-30 16:09 |只看该作者
回复 3# lkk2003rty


    学习了 呵呵

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2010-11-30 16:23 |只看该作者
  1. # echo 'public A: public n1::n2::B { ' | sed -r 's/(public |private |protected )(.):/child=\2/' | sed -r 's/(public |private |protected )/namespace=/' | sed -r 's/(.) \{/ father=\1/'
  2. child=A namespace=n1::n2:: father=B
复制代码

论坛徽章:
0
6 [报告]
发表于 2010-11-30 16:25 |只看该作者
echo "public A: public n1::n2::B { " | awk -F"[ ]+" '{print "child="$2,"namespace="substr($4,0,match($4,/:[^:]+$/)),"father="substr($4,match($4,/:[^:]+$/)+1,length($4)-match($4,/:[^:]+$/))}'

论坛徽章:
0
7 [报告]
发表于 2010-11-30 17:25 |只看该作者
多谢大家的帮忙,已经解决了

论坛徽章:
1
巨蟹座
日期:2014-08-15 14:56:13
8 [报告]
发表于 2010-11-30 19:45 |只看该作者
来个Python的
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import re

  4. s = "public A: public n1::n2::B { "
  5. # child=A namespace=n1::n2:: father=B


  6. t = re.search(r"public\s*(?P<child>.*):\s*public\s*(?P<namespace>(.*::.*))::(?P<father>.*)\s*{", s)
  7. print t.group("child")
  8. print t.group("namespace")
  9. print t.group("father")
复制代码
  1. A
  2. n1::n2
  3. B
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP