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!
- 2421 megtekintés
Hozzászólások
gyors gugli első hit:
http://onelinercode.wordpress.com/2011/03/10/awk-multiline-csv-flattene…
- A hozzászóláshoz be kell jelentkezni
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™
- A hozzászóláshoz be kell jelentkezni
Koszonom kedves valaszod utana nezek mit lehet beilleszteni a belso programnyelvebe. :)
- A hozzászóláshoz be kell jelentkezni
De komolyan, google első találata csvtool. (Már ha nem számítjuk az awk és más egyéb regexpes szerencsétlenkedéseket).
Nem is értem, miért akarnak egyesek CSV-t meg XML-t regexppel parseolni.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
Feltettem ezt a csvtoolt, kipróbáltam, hirtelen átfutottam a helpjét is, de pont azt a sorösszefűzést nem látom, ami itt a lényeg.
Második olvasatra lehet, hogy látnám, hogy mégis tudja, de eddig már időben bőven vezet az awk.
- A hozzászóláshoz be kell jelentkezni
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
}
'
- A hozzászóláshoz be kell jelentkezni