0

Excel から Awk に移行したいと考えています。配列の加算や除算などの基本的な数学演算が必要です。

たとえば、配列 A と B はそれぞれ [1, 3, 2] と [2, 1, 2] です。A と B の乗算から配列 [2, 3, 4] を取得するにはどうすればよいですか? AとBの足し算と割り算は?

4

2 に答える 2

3

この種の数値作業には awk は使用されていないと思います。それはテキスト処理のためのものです。awk の配列は連想的で、まばらに占有されています (インデックス間に「穴」がある場合があります)。文字列を使用してインデックスを作成します。

for(int j=0; j<length(A) && j<length(B); j++)
    C[j] = A[j] * B[j]

ハッシュマップのようなものです。だから、awkでできること

A[100] = 10;
A[1] = 2;

そして、その配列には 2 つの要素しか格納されておらず (2 から 99 までの要素は存在しません)、数値 100 と 1 を変換して作成された文字列によってインデックスが付けられます。GNU Awk マニュアルには、awk の配列に関する優れたセクションがあります

于 2009-02-07T02:25:37.443 に答える
2

awk「配列」では連想的です。つまり、それらは連続する数字の文字列ではなく、任意の入力値によってインデックス付けされたハッシュです。だからあなたは次のようなことができます

for (i=0; i<3; i++){
   c[i] = a[i] * b[i];
};

数値的にインデックス化された要素が存在することがわかっている場合、または次のようなことができます。

d["sam"] = a[3] + b["dog"];

しかし、配列処理は実際にはawkの強みではないため、このコースに大規模に取り組む前に、何が含まれているかを注意深く確認することをお勧めします。

pythonまたは別のかなり近代的な高速開発言語を使用したほうがよいかもしれません。

ところで -- 先週、最初の重要なコードを書きましたが、python完全にはまってしまいました。tclとに時折触れた後perl、私はこれらの種類のツールの価値について本当に希望に満ちていました。私pythonは信者になると思います。

于 2009-02-07T02:26:08.847 に答える