Linux 在UNIX中从csv文件中删除双引号中的逗号
我有一个文件z.csv,它是csv文件。有些行中有双引号和逗号。我需要删除双引号中的逗号,然后从每条记录中删除双引号Linux 在UNIX中从csv文件中删除双引号中的逗号,linux,bash,unix,awk,sed,Linux,Bash,Unix,Awk,Sed,我有一个文件z.csv,它是csv文件。有些行中有双引号和逗号。我需要删除双引号中的逗号,然后从每条记录中删除双引号 "abc","1,234",90,1 ,"1,12,000","12,000",RTC ,,, qqq,www,222,"323" 我需要这样的输出 输出: 如果您在UNIX中有任何帮助,我们将不胜感激 $ awk '{ while ( match($0,/"[^"]*"/) ) { fld = substr($0,RSTART+1,RLE
"abc","1,234",90,1
,"1,12,000","12,000",RTC
,,,
qqq,www,222,"323"
我需要这样的输出
- 输出:
$ awk '{
while ( match($0,/"[^"]*"/) ) {
fld = substr($0,RSTART+1,RLENGTH-2)
gsub(/,/,"",fld)
$0 = substr($0,1,RSTART-1) fld substr($0,RSTART+RLENGTH)
}
print
}' file
abc,1234,90,1
,112000,12000,RTC
,,,
qqq,www,222,323
如果这不是您所需要的全部,那么请参见。一个合适的CSV解析器会自动执行此操作。请您详细说明一下。我的意思是,CSV解析器使用引号来决定哪些逗号分隔字段,哪些逗号是字段的一部分。你问的基本上是,“我如何编写CSV解析器?”是的,对不起,我从来没有这么多地使用过CSV解析器。。。很有魅力。。我将阅读更多关于CSV解析的内容。:)不客气。看看接下来要做什么。
$ awk '{
while ( match($0,/"[^"]*"/) ) {
fld = substr($0,RSTART+1,RLENGTH-2)
gsub(/,/,"",fld)
$0 = substr($0,1,RSTART-1) fld substr($0,RSTART+RLENGTH)
}
print
}' file
abc,1234,90,1
,112000,12000,RTC
,,,
qqq,www,222,323