Python正则表达式 - 在Cisco ASA配置中匹配正则表达式

时间:2016-07-29 04:08:47

标签: python-2.7

我有来自Cisco ASA的以下配置:

for el in "${u_vals[@]}"; do

    awk -F\| -v q=\" -v j="$el" '

        NR > 1 {
            if ($7 == j) {
                for (i = 8; i <= NF; ++i) {
                    gsub(/"/,"",$i);
                    sum[i] += $i;
                }
            }
            ++count;
        };

        END {
            printf("%s","output" FS j FS q count q);
            for (i = 8; i <= NF; ++i)
                printf("%s",FS sum[i]);
            printf("\n");
        };

    ' head_datafile_pipe_deleimiter_more_columns.csv;

done| cat -n;
##      1  output|"$29.95 Plan"|"9"|42.8136|2|2|0|0|0
##      2  output|"$39.95 Plan"|"9"|170.417|2|2|2|0|0
##      3  output|"$49.95 Carryover Plan"|"9"|45.9627|1|1|0|0|0
##      4  output|"$49.95 Plan"|"9"|18.2649|1|1|0|0|0
##      5  output|"$89.95 Plan"|"9"|16.6353|1|1|0|0|0
##      6  output|"PREPAY  PLUS - TRIAL - #16"|"9"|0|0|0|0|0|0
##      7  output|"PREPAY PLUS - $0 -"|"9"|31.8071|1|1|0|0|0

我希望结果看起来像列表或CSV格式:

access-list OUTSIDE extended permit tcp any object O-10.1.2.230 eq 9091  
access-list OUTSIDE extended permit tcp any object O-10.1.2.241 eq pptp

for open in line(“file.txt”):
    如果“访问列表”在行中:
        print line.split()

打印类型(行)

谢谢!

1 个答案:

答案 0 :(得分:0)

请检查这是否有用。

import csv
import sys
#Open both files and get handles.
config_file = open("out.txt" ,'r')
csv_file = open("result.csv",'w')
#
try:
    writer = csv.writer(csv_file)
    #Write titles in csv file
    csv_head_list = ['rule number', 'permit/deny', 'protocol', 'source IP', 'source port', 'des ip', 'des port']
    writer.writerow( csv_head_list )
    rule_num = 0
    #Read file line by line
    for line in config_file.readlines():
        line=line.strip()
        #Check "access-list" in line
        if "access-list" in line:
            tmp_list = line.split()
            rule_num = rule_num + 1
            permit_deny = str(tmp_list[3])
            protocol = str(tmp_list[4])
            src_ip = src_port = str(tmp_list[5])
            des_ip = str(tmp_list[7]).replace("O-",'')
            des_port = str(tmp_list[9])
            #Write data in csv file
            csv_data_list =[rule_num, permit_deny, protocol, src_ip, src_port, des_ip, des_port]

            writer.writerow( csv_data_list)
            csv_data_list = []
except Exception, e:
    print str(e)
finally:
    config_file.close()
    csv_file.close()