- 论坛徽章:
- 0
|
以下是一段字符串,目的想分别捕获数据,然后保存到数组,求高手赐教!
#其中any匹配后要转换为0.0.0.0 255.255.255.255;- #!/usr/bin/perl -w
- use strict;
- my @acl;
- $_="permit ip any 192.168.1.0 0.0.0.255 sequence 10
- permit ip 192.168.14.0 0.0.0.255 any sequence 20
- permit tcp 192.168.32.0 0.0.0.255 gt 23 192.168.30.0 0.0.0.255 eq 80 sequence 30
- deny udp 192.168.52.0 0.0.0.255 range 23 56 192.168.30.0 0.0.0.255 lt 78 sequence 40";
- while (/(permit|deny)\s+(ip|tcp|udp)\s+((\W+\s+\W+)|any)\s+......./sg){
- if ($3 eq "any "){
- $3 = "0.0.0.0 255.255.255.255";
- }else{
- $3 = "";
- }
- push @acl ,$1.$2.$3.$4."\n";
- }
- print @acl;
复制代码 因为不对称,我现在省略号不知道怎么匹配了,range后的(23 56)为一组范围,我想得到的结果是:
permit ip 0.0.0.0 255.255.255.255 192.168.1.0 0.0.0.255
permit ip 192.168.14.0 0.0.0.255 0.0.0.0 255.255.255.255
permit tcp 192.168.32.0 0.0.0.255 gt 23 192.168.30.0 0.0.0.255 eq 80
deny udp 192.168.52.0 0.0.0.255 range 23 56 192.168.30.0 0.0.0.255 lt 78
求高手赐教,不胜感激!
|
|