如何在Bash中解析CSV文件?
问题描述:
我正在处理一个长的Bash脚本。我想将CSV文件中的单元格读入Bash变量。我可以解析行和第一列,但不能解析其他列。这是我的代码到目前为止:如何在Bash中解析CSV文件?
cat myfile.csv|while read line
do
read -d, col1 col2 < <(echo $line)
echo "I got:$col1|$col2"
done
它只打印第一列。作为一个额外的测试,我试过如下:
read -d, x y < <(echo a,b,)
而且$ y是空的。所以,我想:
read x y < <(echo a b)
而且$ y为b
。为什么?
答
从man
页:
-d DELIM DELIM的第一个字符被用于终止输入线, 而非换行符。
您正在使用-d,
,它将终止逗号上的输入行。它不会阅读该行的其余部分。这就是为什么$ y是空的。
你认为`awk`使用`$ 1`,`$ 2`等? – BeemerGuy 2010-11-26 15:23:59
作为旁注:命令命令 tokland 2010-11-26 16:56:45