使用 awk 解析 csv

使用 awk 解析 csv

可能的重复:
有没有强大的命令行工具来处理 csv 文件?

我正在尝试解析文件中的第二行(其中包含双引号内的逗号)

“100 瓦 A19 10,000 小时 - 透明灯泡”,American-Light-Bulb-Mfg,552,室内生活>家居用品>照明>灯泡,”产品代码:H20821 使用能源:100 瓦 额定寿命:10,000 小时 电压: 130 底座:E26 - 中号螺丝(标准家用底座)长度:4.45 英寸直径:2.375 英寸灯泡类型:A19 英寸,1.75,是,http://www.buylighting.com/ProductDetails.asp?ProductCode=H20821&click=104182,http://www.buylighting.com/v/vspfiles/photos/H20821-2T.jpg,,新,,,0.1,H20821 ,,,,,,,,,,,,,,,,.25,绝对,,,,,,,

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

但它输出:

"100 Watt A19 10

我如何使用awkget"100 Watt A19 10,000 Hour - Clear Light Bulb"作为 的值$1?另外我怎样才能awk得到"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"5美元的价值?

答案1

这不是awk非常擅长的事情,请尝试使用perl

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

相关内容