CSV File ujsor problema

Sziasztok!

Lenne egy problemam. Van egy rendszerunk, aminek a report kimenete egy csv fajl(a pelda kedveert letrehoztam egy hasonlot). Ebbol a fajlbol csak par oszlopot szeretnek kinyerni.

CSV file forrasa:

Configuration Manager Compliance Export;;;;
-------------------------------------------------;;;;
Date:;Thu Jun 05 12:27:45 CEST 2014;;;
-------------------------------------------------;;;;
Num Checks:;8;;;
Passed Checks:;4;;;
Failed Checks:;4;;;
Passed Servers:;4;;;
Failed Servers:;4;;;
-------------------------------------------------;;;;
Template;Target Server;Target Component;Rule;Result
Data1;Server2;Firewall;"SSH: Enabled
FTP:Enabled
HTTP:Disabled
HTTPS:Enabled";Pass
Data2;Server3;Firewall;"SSH: Enabled
FTP:Disabled
HTTP:Disabled
HTTPS:Enabled";Pass
Data3;Server4;Firewall;"SSH: Enabled
FTP:Disabled
HTTP:Enabled
HTTPS:Enabled";Pass
Data4;Server5;Firewall;"SSH: Enabled
FTP:Enabled
HTTP:Disabled
HTTPS:Enabled";Pass
Data5;Server6;Firewall;"SSH: Enabled
FTP:Enabled
HTTP:Disabled
HTTPS:Enabled";Pass
Data6;Server7;Firewall;"SSH: Enabled
FTP:Enabled
HTTP:Disabled
HTTPS:Enabled";Pass

Ebbol a fajlbol csak a fejlecet es a 1., 2. es 4. oszlopot szeretnem kiirni egy uj csv fajlba vagy onmagaba az alabbi parancsal shell scriptben:

awk 'BEGIN { FS = "," } ; { print $1","$2","$4" }' $TMPFILE >> $FILENAME

A problema ugye az , hogy az ftp,ssh adatok uj sorban vannak az ujsor karakter miatt es igy rossz cellaba kerulnek.
Otlete valakinek? Mar probaltam rengeteg megoldast az internetrol, de egyik sem volt tokeletes.

SZERK: a rule oszlopban lehet tobb es kevesebb sor is egy cellaban!

Elore is koszi!

Hozzászólások

Mi lenne, ha CSV olvasásra kitalált eszközt használnál és nem mindent szögnek nézel, csak mert van egy kalapácsod?

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

CSVt azért, mert kb triviális regexel, ha amúgyis tovább akarom mószerolni még valami programféléből? (Jó, spec én lusta vagyok, és használom mondjuk a Text::CSV-t, de ált sokkal triviálisabb ott helyben lekezelni, mint belepakolni egy random toolt a workflowba csak ezért)


awk -F';' -vOFS=',' '
   /^Template;/ {mehet=1;next}

   mehet {
      sor=$0
      while ($NF !~ /^(Pass|Fail|mittudomen)$/) {
         getline; sor=sor  " " $0
      }
 
      $0=sor
      print $1, $2, $4
   }
'