2014-10-31 74 views
0

我有一个简单的文本文件“demo.txt”,其中包含:如何从BASH中的文件读取二维数组?

1 2 3 
4 5 6 
7 8 9 

我想用BASH读取该文件,以便在最后,我将有一个二维数组,这将包含在所有的值表如下:

arr[0,0] = 1 
arr[0,1] = 2 
arr[2,2] = 9 

任何想法?

+1

你必须这样做,在bash?当涉及到大型项目时,它(像大多数贝壳一样)相当脆弱。 – 2014-10-31 06:03:06

+1

你*不能有你在bash中提到的那种索引*多维数组(它们并不存在,它们是带有索引技巧的一维数组)。正如@Noufal所说,你最好用不同的语言来做这件事(awk,python,..)。 – 2014-10-31 07:20:21

回答

0

您可以使用关联数组来模拟多维数组:

#!/bin/bash 

file="demo.txt" 
declare -A arr   # declare associative array arr 

row=0 
while read -r -a line; do 
    for ((col=0; col<${#line[@]}; col++)); do 
    arr[$row,$col]="${line[$col]}" 
    done 
    ((row++)) 
done < "$file" 

echo "${arr[0,0]}" 
echo "${arr[0,1]}" 
echo "${arr[2,2]}" 

输出:

 
1 
2 
9