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 - 如何应用一个字段分隔分隔符来解释异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Linux的IFS

字符串查询中的列在执行时没有被分隔

Python:如何找到分隔 2 个不同集群的值?

linux shell 中 awk 分隔符

sql一个字段内有分隔符如何拆分成多行

Linux之特殊的环境变量IFS以及如何删除带有空格的目录