我正在创建一个Bash脚本,从CSV文件中生成一些输出(我有超过1000个条目,不想手动完成...)。
CSV文件的内容类似于以下内容:
Australian Capital Territory,AU-ACT,20034,AU,Australia
Piaui,BR-PI,20100,BR,Brazil
"Adygeya, Republic",RU-AD,21250,RU,Russian Federation
我有一些代码可以使用逗号作为分隔符来分隔字段,但是有些值实际上包含逗号,例如Adygeya,Republic
。这些值用引号括起来,以指示应将其中的字符视为字段的一部分,但我不知道如何解析它以考虑到这一点。
目前我有以下循环:
while IFS=, read province provinceCode criteriaId countryCode country
do
echo "[$province] [$provinceCode] [$criteriaId] [$countryCode] [$country]"
done < $input
对于上面给出的示例数据,它会产生以下输出:
[Australian Capital Territory] [AU-ACT] [20034] [AU] [Australia]
[Piaui] [BR-PI] [20100] [BR] [Brazil]
["Adygeya] [ Republic"] [RU-AD] [21250] [RU,Russian Federation]
你可以看到,第三个条目被解析错误。我希望输出结果为
[Adygeya Republic] [RU-AD] [21250] [RU] [Russian Federation]
awk
,所以可能需要学习一下(为了其他人的利益,链接是:http://backreference.org/2010/04/17/csv-parsing-with-awk/)。 - chrisbunney