免费注册 查看新帖 |

Chinaunix

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

perl能完成这个搜索的功能吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-25 10:08 |只看该作者 |倒序浏览
例如:文件file

Port 1:2
Name               VID  Protocol Addr        Flags        Proto   Ports

xianfu-new         151  221.0.2.41     /30 ------f------- ANY     1/1  
p-cq-quzhengfu-ep0 2579 ------------------ --------       ANY     2/2  
p-cq-quzhengfu-ep0 2578 ------------------ --------       ANY     2/2  
p-cq-quzhengfu-ep0 2577 ------------------ --------       ANY     2/2  
p-cq-quzhengfu-ep0 2576 ------------------ --------       ANY     3/3  
p-cq-quzhengfu-ep0 2575 ------------------ --------       ANY     3/3  
p-cq-quzhengfu-ep0 2574 ------------------ --------       ANY     3/3  


Flags: (C) Domain-masterVlan, (c) Domain-memberVlan, (d) DVMRP Enabled
       (E) ESRP Slave, (f) IP Forwarding Enabled, (G) GVRP Enabled
       (i) ISIS Enabled, (I) IP Forwarding lpm-routing Enabled
       (L) Loopback Enabled, (M) ESRP Master, (m) IPmc Forwarding Enabled
       (N) GNS Reply Enabled, (o) OSPF Enabled, (P) IPX SAP Enabled
       (p) PIM Enabled, (R) SubVLAN IP Range Configured, (r) RIP Enabled
       (S) SuperVlan, (s) SubVlan, (T) Member of STP Domain
能够将"Name"和“Flags:”之间的内容提取出来吗?可以用什么样的规则表达式呢?
谢谢。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2006-08-25 11:13 |只看该作者
有规则就可以提取的。

首先用空格分割,然后不久可以提取了么?

论坛徽章:
0
3 [报告]
发表于 2006-08-25 13:32 |只看该作者
可以根据names和 flags这两个关键字进行模式匹配吗?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2006-08-25 14:02 |只看该作者
这个似乎不行吧。

name和下面的内容,除了空格分割之后位置对等,没有其他的什么联系了。

论坛徽章:
0
5 [报告]
发表于 2006-08-25 15:22 |只看该作者
好像规则表达式可以定义从第几行开始,到第几行结束,然后将其中的内容取出,
就是不知道能不能将行号换成字符串进行匹配查找。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-08-25 15:39 |只看该作者
其实用简单的作法..比较容易看得懂自己在写什麽.....
可以设定一个$flag当他匹配names与flags时,就设定为1..
然後接下来只需要判断$flag ==1,在去作分析即可...
因为即便你数据抓出来..还是需要进行分析....

论坛徽章:
0
7 [报告]
发表于 2006-08-25 21:26 |只看该作者
原帖由 zljjg2000 于 2006-8-25 10:08 发表
例如:文件file

Port 1:2
Name               VID  Protocol Addr        Flags        Proto   Ports

xianfu-new         151  221.0.2.41     /30 ------f------- ANY     1/1  
p-cq-quzhengfu-ep0 25 ...
能够将"Name"和“Flags:”之间的内容提取出来吗?可以用什么样的规则表达式呢?


hi.

yes!

TIPS:
before doing that, you should analyse your data structure, which fixed rule you
can get?
I see. there are 6 fields (or columns) in the records' header:
(NAME, VID, PROTOCAL_ADDR, FLAGS, PROTO, PORTS)
In first 2 fields (NAME, VID) and last 2 fields (PROTO, PORTS) there are fixed format,
but between  PROTOCAL_ADDR and FLAGS there is no clear rules, therefor using
split /\s+/, .. will not match your correct request.
But you can use regex to match it per line.

Best regards,
    ulmer

-------------
Schoenes Wochenende!

论坛徽章:
0
8 [报告]
发表于 2006-08-26 11:31 |只看该作者
已经可以了,通过apile大侠的方法,设置标志位,可以实现,谢谢大家指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP