can explain me small script.
echo -e "\"aa;bb\";cc ;\"dd ;ee\"; ff" | awk -v rs=\" -v ors=\" 'nr%2==0{gsub(";",",")} {print}'
in script fields separated (;
), if there 1 or more (;)
inside field field surrounded ""
.it's csv-file
.
therefore necessary replace (;)
in fields
further parsing.
the echo prints 2 lines:
"aa;bb";cc ;"dd ;ee"; ff
and awk splits records each double quote, , in ones replace semicolons commas (gsub
).
so, first record content before first double quote, it's blank record important part condition nr%2==0
. nr
1 condition false, gsub()
not executed, printed ors
output double quote.
for second record content aa;bb
, nr%2==0
true , replace semicolon.
for third record content ;cc ;
, nr%2==0
false , printed.
and on until end of file.
Comments
Post a Comment