我正在做一个项目,我将一些数据保存到一个文件 (data.txt) 中。
10010101010;99;18767654536;252525
89878337326;44;18764329087;242424
下一步是将该数据读入二维数组,其中 row[0] 是第一行,row[1] 是第二行。我正在努力实现这个目标。此外,我也希望能够访问每一行的各个元素
我目前有这段代码,但它只打印第一行,我无法访问元素
read -a rows < data.txt
for row in "${rows[@]}";do
row_array=(${row})
first=${row_array[0]}
sec=${row_array[1]}
echo ${first}
echo ${sec}
done
最佳答案
根据您的评论,它看起来像一个简单的 while read
循环是你需要的:
while IFS=';' read -r id rest; do
if [[ "$id" == "10010101010" ]]; then
echo "Matching line : $id $rest"
fi
done < data.txt
在此代码中 IFS=';'
指定使用 ;
字符作为命令的内部字段分隔符 read
,这将使它把你的每一行解析为四个不同的词。
read -r
之后的名称对应于用于存储这些单词中的每一个的变量,如果单词多于变量,则最后一个包含该行的其余部分。
read -r id rest
将第一列存储在 $id
中变量和剩下的词变成$rest
, 而 read -r first second third fourth
会将每个单词存储在它自己的变量中。
read
的输入命令在 while
的末尾指定循环附加 < data.txt
在done
之后关闭循环。
关于bash - 在bash中将文件转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144651/