如何读取csv文件到bash脚本中的数组

我写了下面的代码来读取我的csv文件(它有固定数量的列,但不是固定的行数)到我的脚本作为一个数组。 我需要它是一个shell脚本。

usernames x1 x2 x3 x4 username1, 5 5 4 2 username2, 6 3 2 0 username3, 8 4 9 3 

我的代码

 #!/bin/bash set oldIFS = $IFS set IFS=, read -a line < something.csv 

我用过的另一个选项是

 #!/bin/bash while IFS=$'\t' reaad -r -a line do echo $line done < something.csv 

对于这两个我试过一些testing代码,看看arrays的大小将是什么,我似乎得到了第一个10的大小,但arrays只输出用户名。 对于第二个,我似乎得到0的大小,但数组输出整个csv。

帮助非常感谢!

Solutions Collecting From Web of "如何读取csv文件到bash脚本中的数组"

您可以考虑在FS变量中使用正则表达式的AWK ,如下所示:

  awk 'BEGIN { FS=",?[ \t]*"; } { print $1,"|",$2,"|",$3,"|",$4,"|",$5; }' 

或这个

  awk 'BEGIN { FS=",?[ \t]*"; OFS="|"; } { $1=$1; print $0; }' 

(使用新的OFS重建$ 0需要$1=$1