我有一个带矩阵的文本文件
A:1,2,3,4
B:2,4,6,8; 1,2,5,6
C:8,6,4,2; 1,2,3,4; 1,3,5,7我希望在shell脚本中读取此文件,将这些矩阵存储在不同的数组中,然后使用这些数组进行进一步计算(仅限加法和减法)。 这是我的代码:
#! /bin/bash
R=`awk -F'[^0-9]+' '{$1=$1; print;}' testfile.txt`
echo $R;
这给了我这种形式的输出:
1 2 3 4 2 4 6 8 1 2 5 6 8 6 4 2 1 2 3 4 1 3 5 7
我尝试使用循环将这些放在不同的数组中但由于某种原因不起作用。 任何人都可以帮我这个吗?
(我是shell脚本的新手,所以对你的代码解决方案进行一些解释会非常有用。谢谢)
答案 0 :(得分:1)
编程规则之一是解析输入通常比整个练习的其余部分更难。
要开始使用,您可以尝试在每一行上多次使用cut
或Internal Field Separator。
首先使用:
作为分隔符,将数组名称与值分开
然后使用;
作为分隔符来分隔行
最后,使用,
作为分隔符来获取各个值。
答案 1 :(得分:0)
这将矩阵值存储在数组A,B和C中:
IFS+=,\;
eval `
while read name numbers
do if [ $name ]
then echo "${name%:}=($numbers)"
fi
done <testfile.txt
`
这将输出不同的数组,仅用于检查目的:
echo ${A[*]}
echo ${B[*]}
echo ${C[*]}
由于bash只提供一维数组,因此我们必须计算一个给定行大小的索引,例如:克。
row=2; col=3
echo ${C[$row*4+$col]}