2009-02-07 23 views
0

我想從Excel轉移到Awk。我需要數組的基本數學運算,例如加法和除法。AWK如何做數組運算?

例如,數組A和B分別是[1,3,2]和[2,1,2]。如何從A和B之間的乘法中獲得一個數組[2,3,4]? A和B之間的加法和分割是什麼?

+0

不要爲此學習awk,而是學習Perl。但是不要學習Perl,而是學習Python。當你需要處理超過200行的程序時,你的大腦會感謝你。 (說長時間的Perl程序員。) – 2009-02-07 03:04:15

回答

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 here中有關於數組的一個很好的部分。

2

awk「數組」是關聯的。也就是說,它們不是由連續的數字串而是由任意的輸入值索引的。所以,你可以做這樣的事情

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

,如果你知道數字索引的元素存在,或者你可以做這樣的事情:

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

但陣列處理還真是不awk的實力,我建議仔細研究在批發本課程之前涉及的內容。

python或另一種相當現代化的快速開發語言可能會更好。

順便說一句 - 上週我在python上寫了我的第一個不重要的代碼,我完全迷上了。偶爾接觸到tclperl後,我真的很想知道這些工具的價值。我認爲python會讓我相信。