我想从Excel转移到Awk。我需要对数组进行基本的数学运算,例如加法和除法。
例如,阵列A和B分别是[1,3,2]和[2,1,2]。如何从A和B之间的乘法中得到一个数组[2,3,4]? A和B之间的加法和划分怎么样?
答案 0 :(得分: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中数组的部分{ {3}}。
答案 1 :(得分:2)
在awk
“数组中”是关联的。也就是说,它们的哈希值不是由连续的数字串索引,而是由任意输入值索引。所以你可以做像
for (i=0; i<3; i++){
c[i] = a[i] * b[i];
};
如果您知道数字索引元素存在,或者您可以执行以下操作:
d["sam"] = a[3] + b["dog"];
但阵列处理确实不是awk
的强项,我建议在批量学习这门课程之前仔细看一下所涉及的内容。
使用python
或其他相当现代的快速开发语言可能会更好。
BTW--我上周在python
写了我的第一个非平凡的代码,我完全被迷住了。在偶尔接触到tcl
和perl
之后,我对这些工具的价值非常怀疑。我认为python
会使我成为一个信徒。