Hi guys.
I have a CSV file, which I created using an HTML export from a Check Point 
firewall policy.
Each rule is represented as several lines, in some cases. That occurs when a 
rule has several address sources, destinations or services.
I need the output to have each rule described in only one line.
It's easy to distinguish when each rule begins. In the first column, there's 
the rule ID, which is a number.

Let me show you an example. The strings that should be moved are in bold:

[code]NO.;NAME;SOURCE;DESTINATION;VPN  ;SERVICE;ACTION;TRACK;INSTALL 
ON;TIME;COMMENT
1;;fwxcluster;mcast_vrrp;;vrrp;accept;Log;fwxcluster;Any;"VRRP;;*Comment 
suppressed*
;;;;;[b]igmp**;;;;;
2;;fwxcluster;fwxcluster;;FireWall;accept;Log;fwxcluster;Any;"Management 
FWg;*Comment suppressed*
;;[b]fwmgmpe**;[b]fwmgmpe**;;[b]ssh**;;;;;
;;[b]fwmgm**;[b]fwmgm**;;;;;;;
3;NTP;G_NTP_Clients;cmm_ntpserver_pe01;;ntp;accept;None;fwxcluster;Any;*Comment 
suppressed*
;;;[b]cmm_ntpserver_pe02**;;;;;;;[/code]
        
What I need ,explained in pseudo code, is this:

Read the first column of the next line. If there's a number:
        Evaluate the first column of the next line. If there's no number there, 
concatenate (separating with a comma) \
        the strings in the columns of this line with the last one and eliminate 
the text in the current one

The output should be something like this. The strings in bold are the ones that 
were moved:

[code]NO.;NAME;SOURCE;DESTINATION;VPN  ;SERVICE;ACTION;TRACK;INSTALL 
ON;TIME;COMMENT
1;;fwxcluster,[b]fwmgmpe**,[b]fwmgm**;mcast_vrrp,[b]fwmgmpe**,[b]fwmgm**;;vrrp,[b]ssh**;accept;Log;fwxcluster;Any;*Comment
 suppressed*
;;;;;;;;;;
;;;;;;;;;;
3;NTP;G_NTP_Clients;cmm_ntpserver_pe01,[b]cmm_ntpserver_pe02**;;ntp;accept;None;fwxcluster;Any;*Comment
 suppressed*
;;;;;;;;;;[/code]

The empty lines are there only to be more clear, I don't actually need them.

Thanks!
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to