免费注册 查看新帖 |

Chinaunix

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

awk或者sed对不规则行怎么提取字符? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-04-29 20:57 |只看该作者
用sed编辑htm的源文件?

论坛徽章:
0
12 [报告]
发表于 2006-04-30 01:26 |只看该作者
[aluns]/home/tmp>grep 3232 a.html | sed -e 's/<[^32]*>//g' -e 's/<.*>//g' -e 's/\&nbsp\;//g'
IIS 5.0/WebDAV远程缓冲区溢出(MS03-007)
135Messenger服务远程堆溢出漏洞(MS03-043/KB828035)
1025Microsoft Windows MSDTC内存破坏漏洞(MS05-051/KB902400)
1029Microsoft Task Scheduler远程任意代码执行漏洞(精确扫描MS04-022/KB841873)

-----------------------

grep 3232 a.html | sed -e 's/<[^32]*>//g;s/<.*>//g;s/\&nbsp\;//g'


这样不行吗?

[ 本帖最后由 技安 于 2006-4-30 01:28 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-04-30 09:30 |只看该作者
原帖由 技安 于 2006-4-30 01:26 发表
[aluns]/home/tmp>grep 3232 a.html | sed -e 's/<[^32]*>//g' -e 's/<.*>//g' -e 's/\&nbsp\;//g'
IIS 5.0/WebDAV远程缓冲区溢出(MS03-007)
135Messenger服务远程堆溢出漏洞(MS03-043/KB82 ...

谢谢回复,测试了你的语句,不行。结果如下


远端WWW服务提供了对WebDAV的支持[低]远程主机安装了IIS5 .printer ISAPI扩展[低]远程IIS主机安装了.HTR ISAPI扩展[低]IIS错误判断HTTP请求来自本机[低]IIS 5.0/WebDAV远程缓冲区溢出(MS03-007)[高]远程IIS主机安装了.IDA或.IDQ ISAPI扩展[低]
135Microsoft MSDTC COM+远程代码执行漏洞(MS05-051/KB902400)[高]DCE/RPC服务枚举漏洞[低]微软DCOM接口缓冲区溢出漏洞(MS03-026/MS03-039)[高]Messenger服务远程堆溢出漏洞(MS03-043/KB828035)[高]
1025Microsoft Windows MSDTC内存破坏漏洞(MS05-051/KB902400)[高]
1029Microsoft Task Scheduler远程任意代码执行漏洞(精确扫描MS04-022/KB841873)[高]


可以看出基本功能是完成了,但问题是html字符中,它没有断行,多行合并成一行,造成格式混乱。所以要想整齐的话,要在BC3232字符的前面插入一个断行符号。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
14 [报告]
发表于 2006-04-30 11:19 |只看该作者
有GNU grep吗?
  1. grep -Po '(?<=3232>)[^<>]*MS\d+-\d+[^<>]*'
复制代码

在GNU grep 2.5.1下测试成功。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
15 [报告]
发表于 2006-04-30 11:32 |只看该作者
to woodie
以他的例子看
(?<=3232>)[^<>]*MS\d+-\d+[^<>]*
写成
(?<=3232>)[^<]*
是不是就够了?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
16 [报告]
发表于 2006-04-30 11:34 |只看该作者
用perl吧~ ,不过,我忘了怎么写perl的cmdline乐~,

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
17 [报告]
发表于 2006-04-30 11:43 |只看该作者
原帖由 waker 于 2006-4-30 11:32 发表
to woodie
以他的例子看
(?<=3232>)[^<>]*MS\d+-\d+[^<>]*
写成
(?<=3232>)[^<]*
是不是就够了?

就楼主给出的文件,你说的是对的。同意!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
18 [报告]
发表于 2006-04-30 11:46 |只看该作者
原帖由 寂寞烈火 于 2006-4-30 11:34 发表
用perl吧~ ,不过,我忘了怎么写perl的cmdline乐~,

用perl也得考虑一行多个匹配的情况,除非重新定义行分隔符。不见得比grep -Po更简单。^_^

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
19 [报告]
发表于 2006-04-30 11:58 |只看该作者
再to woodie
麻烦你顺手把后面的“[高]"也给他弄出来吧,斩草除根算了

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
20 [报告]
发表于 2006-04-30 12:09 |只看该作者
原帖由 waker 于 2006-4-30 11:58 发表
再to woodie
麻烦你顺手把后面的“[高]"也给他弄出来吧,斩草除根算了

既然知道一定是“[高]”,楼主要的话就手工加好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP