Unix - 如何应用一个字段分隔分隔符来解释异常[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix - 如何应用一个字段分隔分隔符来解释异常[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有一个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的字段,并解释用双引号括起来的异常值?
答案
如果你有gawk
,你可以尝试FPAT变量来定义字段而不是指定字段分隔符。但是,在您的特定情况下,过滤掉前3个字段可能更容易
$ awk '{sub(/([^,]+,){3} ?/,"")}1' file
COLORS,TICKET
"YELLOW, BLUE, RED", true
"BLUE, GREEN", false
GREEN, true
或类似于sed
$ sed -E 's/([^,]+,){3} ?//'
以上是关于Unix - 如何应用一个字段分隔分隔符来解释异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章