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 创建的字符串索引。

于 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 回答