如何parsingBash中的CSV文件?
我正在做一个长的Bash脚本。 我想从CSV文件中读取单元格到Bashvariables。 我可以parsing行和第一列,但没有任何其他列。 这是我的代码到目前为止:
cat myfile.csv|while read line do read -d, col1 col2 < <(echo $line) echo "I got:$col1|$col2" done 这只是打印第一列。 作为一个额外的testing,我尝试了以下内容:
 read -d, xy < <(echo a,b,) 
$ y是空的。 所以我试了一下:
 read xy < <(echo ab) 
 而$ y是b 。 为什么? 
 您需要使用IFS而不是-d : 
 while IFS=, read -r col1 col2 do echo "I got:$col1|$col2" done < myfile.csv 
 请注意,对于一般用途的CSVparsing,您应该使用一个专门的工具,它可以处理与内部逗号引用字段,以及其他问题,Bash本身无法处理。 这样的工具的例子是cvstool和csvkit 。 
 从man页: 
-d delim delim的第一个字符用于终止input行,而不是换行符。
 您正在使用-d,这将在逗号上终止input行。 它不会读取其余的行。 这就是为什么$ y是空的。