Unix - 如何应用一个字段分隔分隔符来解释异常[重复]

问题描述 投票:1回答:1

我有一个CSV文件,我试图在Unix环境中按字段分隔。 CSV文件以逗号分隔,某些字段的值使用多个逗号,如下所示:

名称,日期,大小,颜色,TICKET

詹姆斯,11/20/10,XL,“黄色,蓝色,红色”,真实

艾米,11/25/10,S,“蓝色,绿色”,假

杰克,12/01/10,M,绿色,真实

使用逗号分隔符运行剪切命令不能正确分割字段,因为它会计算某些COLORS值中使用的逗号。使用awk命令并应用-F或-FS时会发生同样的问题:

awk  '{print $4,$5}' FS="," file.csv
awk -F"," '{print $4,$5}' file.csv
cut -d ',' -f4,5 file.csv

上面使用的所有代码都错误地拆分字段并输出如下内容:

颜色门票

“黄色的蓝色

“蓝绿色

绿色真实

有没有办法应用一个分隔符,可以正确地分割CSV的字段,并解释用双引号括起来的异常值?

bash unix awk sed
1个回答
1
投票

如果你有gawk,你可以尝试FPAT变量来定义字段而不是指定字段分隔符。但是,在您的特定情况下,过滤掉前3个字段可能更容易

$ awk '{sub(/([^,]+,){3} ?/,"")}1' file

COLORS,TICKET
"YELLOW, BLUE, RED", true
"BLUE, GREEN", false
GREEN, true

或类似于sed

$ sed -E 's/([^,]+,){3} ?//'
© www.soinside.com 2019 - 2024. All rights reserved.