我正在编写一个很长的 Bash 脚本。我想将 CSV 文件中的单元格读入 Bash 变量。我可以解析行和第一列,但不能解析任何其他列。到目前为止,这是我的代码:
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
。为什么?
原文由 User1 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要使用
IFS
而不是-d
:请注意,对于通用 CSV 解析,您应该使用专门的工具来处理带内部逗号的引用字段,以及 Bash 自身无法处理的其他问题。此类工具的示例是
cvstool
和csvkit
。