免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bikkuri
打印 上一主题 下一主题

[文本处理] 请教用正则表达式查找数字字符串 [复制链接]

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
11 [报告]
发表于 2015-05-13 19:11 |只看该作者
回复 6# bikkuri

零宽断言要-P perl REG才支持

   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
12 [报告]
发表于 2015-05-13 19:15 |只看该作者
  1. sed -nr 's/.*([0-9]-[0-9]{7}).*/\1/p'
  2. 1-5702630
复制代码
回复 1# bikkuri


    grep不好用用sed试试

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
13 [报告]
发表于 2015-05-13 20:00 |只看该作者
谢谢您的帮助。
但是在Solaris下还是不能正常运行。
  1. [root@cat1:/]# cat /etc/motd|sed -nr 's/.*([0-9]-[0-9]{7}).*/\1/p'
  2. sed: illegal option -- r
  3. [root@cat1:/]# cat /etc/motd|sed -n 's/.*([0-9]-[0-9]{7}).*/\1/p'
  4. sed: command garbled: s/.*([0-9]-[0-9]{7}).*/\1/p
  5. [root@cat1:/]#
复制代码
liion631818 发表于 2015-05-13 19:15
回复 1# bikkuri

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
14 [报告]
发表于 2015-05-13 20:06 |只看该作者
谢谢您的指点。
好像/usr/xpg4/bin/grep也不行。
  1. [root@cat1:/]# /usr/xpg4/bin/grep -woP '\d-\d{7}' /etc/motd
  2. /usr/xpg4/bin/grep: illegal option -- o
  3. Usage:  grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
  4.         grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
  5.         grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
  6.         grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
  7.         grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
  8.         grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
  9. [root@cat1:/]# /usr/xpg4/bin/grep -woE '\d-\d{7}' /etc/motd
  10. /usr/xpg4/bin/grep: illegal option -- o
  11. Usage:  grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
  12.         grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
  13.         grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
  14.         grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
  15.         grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
  16.         grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
  17. [root@cat1:/]# /usr/xpg4/bin/grep '[0-9]-[0-9]{7}' /etc/motd
  18. [root@cat1:/]# /usr/xpg4/bin/grep -E '[0-9]-[0-9]{7}' /etc/motd
  19. Brunei customer SAM9.0R8(upgraded to SAM11.0R7) is restored on the machine for AR:1-5564861.
  20. [root@cat1:/]#
复制代码
回复 10# Shell_HAT


   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
15 [报告]
发表于 2015-05-13 20:09 |只看该作者
本帖最后由 liion631818 于 2015-05-13 20:10 编辑
  1. sed -n 's/.*\([0-9]-[0-9]\{7\}\).*/\1/p'
复制代码
  1. sed -n 's/.*\([0-9]-[0-9]\+\).*/\1/p'
复制代码
回复 13# bikkuri


    将就下

论坛徽章:
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
16 [报告]
发表于 2015-05-13 20:12 |只看该作者
回复 14# bikkuri


    自己安装一个吧 http://ftp.gnu.org/gnu/grep/

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
17 [报告]
发表于 2015-05-13 20:15 |只看该作者
本帖最后由 bikkuri 于 2015-05-13 20:30 编辑

非常感谢!
好像上面那条命令可以得到正确结果!
  1. [root@cat1:/]# cat /etc/motd|sed -n 's/.*\([0-9]-[0-9]\{7\}\).*/\1/p'
  2. 1-5564861
  3. [root@cat1:/]# cat /etc/motd|sed -n 's/.*\([0-9]-[0-9]\+\).*/\1/p'
  4. [root@cat1:/]#
复制代码
测试发现Linux和Solaris下均可以得到正确结果。
原来sed这么强大。。。
谢谢了!

回复 15# liion631818


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
18 [报告]
发表于 2015-05-13 20:24 |只看该作者
谢谢您的指点。
不过由于服务器的数量太大,一台一台装软件不太现实,而且有的服务器是客户的,不能轻易安装软件。
非要装的话,走流程就麻烦了。

Shell_HAT 发表于 2015-05-13 20:12
回复 14# bikkuri

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
19 [报告]
发表于 2015-05-13 20:45 |只看该作者
回复 17# bikkuri


    严谨点,防止匹配到连字号后面有8个以上数字的情况,最好这样
  1. sed -n '/[0-9]-[0-9]\{8\}/d;s/.*\([0-9]-[0-9]\{7\}\)[^0-9]*/\1/p'
复制代码

论坛徽章:
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
20 [报告]
发表于 2015-05-13 21:41 |只看该作者
回复 18# bikkuri


用sed吧,我这边也这样,编译器的版本,默认的系统补丁,
能不动就不动,要不一堆麻烦事。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP