将 csv 文件中的每一列分配给一个数组
Assigning each column in a csv file to an array
NameColumn1;NameColumn2;NameColumn3;NameColumn4
Row1;Row1;Row1;Row1;
Row2;Row2;Row2;Row2;
Row3;Row3;Row3;Row3;
我遇到了一个例子,有人想获取以下信息(上图)并将它们存储在变量中。解决方案是创建一个循环,将数据全部附加到常规变量中:
#!/usr/bin/env bash
while IFS=';' read -ra array; do
ar1+=("${array[0]}")
ar2+=("${array[1]}")
ar3+=("${array[2]}")
ar4+=("${array[3]}")
done < file.csv
而不是 ar1-4 包含每一列中的所有数据,我更愿意将这些数据分隔在一个数组中,这样我就会有一个 col1(x), col2(x), col3(x), col4 (x) 和 x 将代表包含单个值的行。这在 bash 中可行吗?
我尝试创建自己的版本,但收到一条错误消息,提示“无法将列表分配给数组成员”。这是生成错误消息的修改版本。第一行中的第一个值包含 header。我通过将“echo ${array[0]}”插入循环来检查值,它显示“Employee Payroll”(不带引号):
while IFS=, read -ra array
do
col1[$x]=("${array[0]}")
col2[$x]=("${array[1]}")
col3[$x]=("${array[2]}")
col4[$x]=("${array[3]}")
col5[$x]=("${array[4]}")
col6[$x]=("${array[5]}")
col7[$x]=("${array[6]}")
col8[$x]=("${array[7]}")
x+=1
done < "$importfile"
谢谢!
显然,删除单词数组周围的 (" ") 解决了这个问题。这是工作代码。
while IFS=, read -ra array
do
echo ${array[0]}
col1[$x]=${array[0]}
col2[$x]=${array[1]}
col3[$x]=${array[2]}
col4[$x]=${array[3]}
col5[$x]=${array[4]}
col6[$x]=${array[5]}
col7[$x]=${array[6]}
col8[$x]=${array[7]}
x+=1
done < "$importfile"
NameColumn1;NameColumn2;NameColumn3;NameColumn4
Row1;Row1;Row1;Row1;
Row2;Row2;Row2;Row2;
Row3;Row3;Row3;Row3;
我遇到了一个例子,有人想获取以下信息(上图)并将它们存储在变量中。解决方案是创建一个循环,将数据全部附加到常规变量中:
#!/usr/bin/env bash
while IFS=';' read -ra array; do
ar1+=("${array[0]}")
ar2+=("${array[1]}")
ar3+=("${array[2]}")
ar4+=("${array[3]}")
done < file.csv
而不是 ar1-4 包含每一列中的所有数据,我更愿意将这些数据分隔在一个数组中,这样我就会有一个 col1(x), col2(x), col3(x), col4 (x) 和 x 将代表包含单个值的行。这在 bash 中可行吗?
我尝试创建自己的版本,但收到一条错误消息,提示“无法将列表分配给数组成员”。这是生成错误消息的修改版本。第一行中的第一个值包含 header。我通过将“echo ${array[0]}”插入循环来检查值,它显示“Employee Payroll”(不带引号):
while IFS=, read -ra array
do
col1[$x]=("${array[0]}")
col2[$x]=("${array[1]}")
col3[$x]=("${array[2]}")
col4[$x]=("${array[3]}")
col5[$x]=("${array[4]}")
col6[$x]=("${array[5]}")
col7[$x]=("${array[6]}")
col8[$x]=("${array[7]}")
x+=1
done < "$importfile"
谢谢!
显然,删除单词数组周围的 (" ") 解决了这个问题。这是工作代码。
while IFS=, read -ra array
do
echo ${array[0]}
col1[$x]=${array[0]}
col2[$x]=${array[1]}
col3[$x]=${array[2]}
col4[$x]=${array[3]}
col5[$x]=${array[4]}
col6[$x]=${array[5]}
col7[$x]=${array[6]}
col8[$x]=${array[7]}
x+=1
done < "$importfile"