免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed 正则表达式的或怎么写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-24 12:32 |只看该作者 |倒序浏览
本帖最后由 guocanwen 于 2014-02-24 12:35 编辑

01111101111AXX=1111111BXX=000
01111101111BXX=0111111AXX=100

想把
AXX=1 BXX=0
BXX=0 AXX=1
提取出来

用sed如何做?
sed  -n 's/^.*\([AXX|BXX]=[0-9]\).*\([AXX|BXX]=[0-9]\).*$/\1 \2/p' 不能用

返回的是
X=1 X=0
X=0 X=1

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2014-02-24 12:38 |只看该作者
  1. sed -r 's/[0-9]*(.XX=.)[0-9]*(.XX=.)[0-9]*/\1 \2/' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-02-24 12:41 |只看该作者
这种方法不是很好,如果AXX=Boy, BXX=girl,怎么做?
回复 2# Shell_HAT


   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [报告]
发表于 2014-02-24 13:05 |只看该作者
回复 3# guocanwen
楼主,你自己要第一个数字的。
还是详细给出初始文本、想要结果吧,
要不写的又不是你要的。
   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-02-24 13:07 |只看该作者
回复 3# guocanwen

你这是在调戏版主么 ?
   

论坛徽章:
0
6 [报告]
发表于 2014-02-24 13:08 |只看该作者
回复 1# guocanwen

你这个是gnu sed才能用的写法,建议少写这种表达式,无法通用。

regular sed。
这样用
  1. sed  -n 's/^.*\(AXX=[0-9]\).*\(BXX=[0-9]\).*$/\1 \2/p;s/^.*\(BXX=[0-9]\).*\(AXX=[0-9]\).*$/\1 \2/p'
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2014-02-24 14:06 |只看该作者
回复 3# guocanwen


请给出原始文本和你希望得到的结果

论坛徽章:
0
8 [报告]
发表于 2014-02-24 15:09 |只看该作者
回复 7# Shell_HAT
在一行中有很多统计项item,每个统计项中都会有item_num_ops和item_avg_time两个属性,这两个属性在一行中的先后顺序不定。现在需要抽取一行中所有的统计项的两个属性和,输出格式如下:
item1: item1_num_ops * item1_avg_time
item2: item2_num_ops * item2_avg_time


部分片段如下所示:
"memstoreInsert_num_ops":0,"appendWriteTime_num_ops":0,"rwccWait_num_ops":0,"blockCacheEvictedMultiCount":0,"flushSize_avg_time":135649758,"syncEntryRate_avg_time":0,"appendEditsSize_num_ops":0,"fsSyncLatency_num_ops":0,"appendLockTime_num_ops":0,"compactionQueueSizeS":0,"fsSyncLatency_avg_time":0,"period":60,"appendSyncWaitTime_avg_time":0,"compactionSize_num_ops":1,"compactionTime_num_ops":1,"syncEntries_avg_time":0,"syncEntryRate_num_ops":0,"blockCacheEvictedCount":0,"storefileIndexSizeMB":425
   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2014-02-24 15:18 |只看该作者
回复 8# guocanwen


    以你给的这个片段为例,请把希望得到的完整结果发出来看看,只要结果,不要有任何文字描述。

论坛徽章:
0
10 [报告]
发表于 2014-02-24 15:47 |只看该作者
回复 9# Shell_HAT
其实只是想问在sed的正则表达式中,“或运算”应该怎么写。如果使用“或运算”,我就能够在一行命令完成需要的统计。现在我现在已经改用脚本实现了,不过还是谢谢你

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP