UNIX - Cercar todos os valores de coluna de CSV com aspas duplas

-1

Eu tenho dados no seguinte formato:

productType , Description
Oven , Accurate Preheat, good start for the day 
hairDryers , Comes with extended warranty , 50% off

Saída desejada:

"productType" , "Description"
"Oven" , "Accurate Preheat, good start for the day" 
"hairDryers" , "Comes with extended warranty , 50% off"

Eu usei o seguinte comando SED:

sed -e 's/"//g' -e 's/^\|$/"/g' -e 's/,/","/g' filename.csv

O comando acima não funciona se você tiver , e " em valores de célula.

em vez disso, será:

"productType","Description"
"Oven","Accurate Preheat"," good start for the day" 
"hairDryers","Comes with extended warranty "," 50% off"

alguma maneira de corrigir essa saída para obter a saída desejada?

    
por Abhi1005 28.07.2016 / 08:30

1 resposta

2

Tente:

$ sed -E 's/([^,]*) , (.*)/"" , ""/' input
"productType" , "Description"
"Oven" , "Accurate Preheat, good start for the day"
"hairDryers" , "Comes with extended warranty , 50% off"

Em todos os seus exemplos, a primeira vírgula é o separador de campo e a segunda vírgula, se houver, faz parte do segundo campo. Assim, separamos a entrada de acordo com a localização da primeira vírgula na linha e colocamos aspas em torno das duas partes.

    
por 28.07.2016 / 09:06