1

行列を含むテキスト ファイルがあります

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

このファイルをシェル スクリプトで読み取り、これらの行列を別の配列に格納してから、これらの配列を使用してさらに計算を行います (加算と減算のみ)。これが私のコードです:

#! /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

ループを使用してこれらを別の配列に配置しようとしましたが、何らかの理由で機能しませんでした。誰でもこれで私を助けることができますか?

(私はシェルスクリプトを初めて使用するので、コードソリューションの簡単な説明が本当に役に立ちます。ありがとう)

4

2 に答える 2

1

プログラミングの法則の 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 は 1 次元配列のみを提供するため、行サイズを指定してインデックスを計算する必要があります。

row=2; col=3
echo ${C[$row*4+$col]}
于 2013-11-21T10:09:16.830 に答える