[英]How to read columns from csv file into array in bash
我有一个看起来像这样的 csv 文件
NameColumn1;NameColumn2;NameColumn3;NameColumn4
Row1;Row1;Row1;Row1;
Row2;Row2;Row2;Row2;
Row3;Row3;Row3;Row3;
我想从 NameColumn1 中取出 Row1、Row2 和 Row3 中的值并将它们放入数组中,NameColumn2、NameColumn3 和 NameColumn4 也是如此。
我不知道我会有多少行,但我知道列数。 有什么帮助吗?
谢谢你。
假设你有四列
while read a b c d; do
ar1+=($a)
ar2+=($b)
ar3+=($c)
ar4+=($d)
done < <(sed 's/;/\t/g' somefile.txt)
然后,您有 4x 数组,称为 ar1 到 ar4,其中包含列值。
使用内置read
中的-a
选项/标志。
#!/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
printf '%s\n' "${ar1[@]}" "${ar2[@]}" "${ar3[@]}" "${ar4[@]}"
使用@SaintHax 回答和调整; 这适用于我的应用程序和类似格式的数据。 请注意在存储的变量上添加引号,并在重定向文件上删除 sed 命令。 感谢@Jetchisel 的评论,删除了 IFS 设置。
while read -r a b c d; do
ar1+=("$a")
ar2+=("$b")
ar3+=("$c")
ar4+=("$d")
done < somefile.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.