1

我有一个带有矩阵的文本文件

答: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 脚本的新手,所以对您的代码解决方案进行一些解释会非常有帮助。谢谢)

4

2 回答 2

1

编程法则之一是解析输入通常比整个练习的其余部分更难。

首先,您可以尝试在每行上多次使用其中一个cut内部字段分隔符。

首先:用作分隔符将数组名称与值分开。
然后;用作分隔行的分隔符。
最后,,用作分隔符以获取各个值。

于 2012-04-30T02:13:04.693 回答
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]}
于 2013-11-21T10:09:16.830 回答