[英]How to read in csv file to array in bash script
我编写了以下代码,以将我的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
对于这两者,我尝试了一些测试代码来查看数组行的大小,并且第一个似乎是10,但是数组仅输出用户名。 对于第二个,我似乎得到的大小为0,但数组输出整个csv。
非常感谢帮助!
您可以考虑将AWK
与FS
变量中的正则表达式一起使用,如下所示:
awk 'BEGIN { FS=",?[ \t]*"; } { print $1,"|",$2,"|",$3,"|",$4,"|",$5; }'
或这个
awk 'BEGIN { FS=",?[ \t]*"; OFS="|"; } { $1=$1; print $0; }'
(需要$1=$1
才能用新的OFS重建$ 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.