【发布时间】:2023-03-15 05:09:01
【问题描述】:
我有一个 csv 文件。我想将字段放入不同的变量中。假设 csv 文件的每一行包含三个字段。我有这个代码:
csvfile=test.csv
while read inline; do
var1=`echo $inline | awk -F',' '{print $1}'`
var2=`echo $inline | awk -F',' '{print $2}'`
var3=`echo $inline | awk -F',' '{print $3}'`
.
.
.
done < $csvfile
这段代码很好。但是,如果使用嵌入的逗号对字段进行编码,则它将不起作用。有什么建议吗?例如:
how,are,you
I,"am, very",good
this,is,"a, line"
【问题讨论】:
-
代码不好,它包含几个错误,不推荐使用的结构,并且是做你想做的事情的错误方法加上尝试将值保存在不同的变量中几乎可以肯定是反正是个坏主意。如果您发布简洁、可测试的示例输入和预期输出,我们可以为您提供帮助。
-
听起来像 csvkit 这样的专用工具的工作;除此之外,你可以使用 gawk 和
FPAT: gnu.org/software/gawk/manual/gawk.html#Splitting-By-Content -
你想用你设置的
vars 做什么?对于每一行,值都会发生变化,所以我认为你想在循环中对它们做一些事情。