我试图读取csv
文件并用逗号分隔数据。
我用过
IFS=, list=($line)
for word in ${list[@]}; do
echo $word
done
根据逗号分割csv
记录,效果很好。
问题是我在csv中有一个带引号的字符串,其中包含一个逗号
Name, "Oct 2, 2015 at 1:06 PM", Superman
在这种情况下,它会返回
Name
"Oct 2
2015 at 1:06 PM"
Superman
我想要
Name
"Oct 2, 2015 at 1:06 PM"
Superman
如何解决这个问题?
答案 0 :(得分:2)
在纯粹的bash中执行此操作并不是一个好方法,并且您无法使用cut
来执行此操作,而且也不会尊重引号。
但是,有很好的命令行实用程序。例如,Fedora有一个csv
包,提供csv
命令,它与cut
做同样的事情,但尊重引号:
[james@marlon ~] $ echo '1,"3,w",4' | csv --col 2
"3,w"
它还提供了一个包ocaml-csv
,它为csvtool
提供了类似的功能:
[james@marlon ~] $ echo '1,"3,w",4' | csvtool col 2 -
"3,w"
这些很可能也可以在其他发行版上使用。