2009-02-07 4 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 프로그래머로 일 해왔다.) –

답변

3

awk는 이런 종류의 숫자 작업을 수행하지 않는다고 생각합니다. 그것은 텍스트 처리를위한 것입니다. awk의 배열은 연관되어 있고 드물게 점유되어 있습니다 (색인 사이에 "구멍"이있을 수 있음). 문자열을 사용하여 색인을 생성합니다.

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

해시지도와 같습니다. 그래서, AWK 당신은 GNU 숫자 100과 1을 변환하여

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

을 그리고 (2 99 요소가 존재하지 않는) 문자열에 의해 색인이 생성되는 해당 배열에 저장 만 2 요소를 가질 수 있습니다 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 또는 다른 최신 고속 개발 언어를 사용하는 것이 더 나을 것입니다.

BTW-- 나는 지난 주에 python에 코드의 첫 번째 중요한 코드를 썼다. 나는 완전히 푹 빠져있다. 가끔 tcl과 에 노출 된 후, 저는 이러한 종류의 도구의 가치에 대해 정말로 소원했습니다. 나는 python이 나를 믿는 사람이되게 할 것이라고 생각한다.