2013-08-07 2 views
1

나는 awk을 처음 접했고 연관 배열의 모든 요소를 ​​한 번에 선언하는 방법을 찾고있다. 내가 원하는 예를 들어, (효과적으로 사전입니다) 파이썬에서 연관 배열을 선언하는 내가 이런 짓을 했을까 : awk에서하나의 명령문에서 연관 배열의 모든 요소 선언 - AWK

이제
numbers = {'uno': 1, 'sero': 0} 

, 그것은 아래의 하나에 두 줄의 코드를 변환 할 수 있습니까?

numbers["uno"] = 1 
numbers["sero"] = 0 

답변

2

AWK는 내가 아는 한 배열 리터럴을 가지고 있지 않지만,이 스크립트는 가까이하기 위해 할 수있는 일을 보여줍니다

물론
BEGIN { 
    split("uno|1|sero|0",a,"|"); 
    for (i = 1; i < 4; i += 2) {b[a[i]] = a[i+1];} 
} 
END { 
    print b["sero"]; 
    print b["uno"]; 
} 

, 당신은 항상 할 수있는 기능을 만들 수 있습니다

newarray("uno", 1, "sero", 0); 

처럼 나처럼 호출 할

newarray("uno|1|sero|0"); 
2

아니요. 가능한 가장 좋은 방법은 다음과 같습니다.

$ awk 'BEGIN { 
    # populate the "numbers" array: 
    split("uno:1,sero:0",a,/[:,]/) 

    for (i=1;i in a;i+=2) 
     numbers[a[i]] = a[i+1] 

    # print the "numbers" array: 
    for (i in numbers) 
     print i, numbers[i] 
}' 
uno 1 
sero 0