Analisa csv usando awk [duplicado]

3

Estou tentando analisar a segunda linha em um arquivo (que contém vírgulas entre aspas duplas)

"100 Watt A19 10,000 Hour - Clear Light Bulb",American-Light-Bulb-Mfg,552,Indoor Living>Home Furnishings>Lighting>Light Bulbs,"Product Code: H20821 Energy Used: 100 Watts Rated Life: 10,000 Hours Volts: 130 Base: E26 - Medium Screw (standard household base) Length: 4.45 Inches Diameter: 2.375 Inches Bulb Type: A19",1.75,Yes,http://www.buylighting.com/ProductDetails.asp?ProductCode=H20821&click=104182,http://www.buylighting.com/v/vspfiles/photos/H20821-2T.jpg,,New,,,0.1,H20821,,,,,,,,,,,,,,,,.25,Absolute,,,,,,,

head -2 file.csv | tail -1 | awk -F',' '{print $1}'

Mas o resultado é:

"100 Watt A19 10

Como posso usar awk para obter "100 Watt A19 10,000 Hour - Clear Light Bulb" como o valor de $1 ? Além disso, como posso usar awk para obter "Product Code: H20821 Energy Used: 100 Watts Rated Life: 10,000 Hours Volts: 130 Base: E26 - Medium Screw (standard household base) Length: 4.45 Inches Diameter: 2.375 Inches Bulb Type: A19" como o valor de $ 5?

    
por toobsco42 31.01.2013 / 20:37

1 resposta

2

Isso não é algo em que awk é muito bom, tente usar perl :

head -n 2 file.csv |
  tail -n 1 |
  perl -lne '@a = /((?:".*?"|.)*?)(?:,|$)/g; print $a[0]'
    
por 31.01.2013 / 21:03

Tags