awk 배열의 모든 내용을 보는 방법은 무엇입니까?


41

내 이해에서 awk 배열은 python dict와 같은 것입니다.

그래서 코드를 아래에 적어 살펴보십시오.

awk '{my_dict[$1] = $2} END { print my_dict}' zen

그리고 나는 얻었다 : awk: can't read value of my_dict; it's an array name.

첫 번째 열은 숫자가 아니므로 배열의 전체 내용을 읽거나 가로 지르는 방법은 무엇입니까?

답변:


60

배열의 키를 반복하고 해당 값을 추출 할 수 있습니다.

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen

파이썬 사전과 비슷한 결과를 얻으려면 키를 인쇄하십시오.

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen

키 유형에 관계없이 작동합니다.


14

배열을 반복합니다.

END { for (i in my_dict) print my_dict[i] }

i 인덱스입니다.


8

배열 in awk은 사전 in과 같은 첫 번째 클래스 객체가 아닙니다 Python. 에서 awk첨자가없는 배열 이름은 두 가지 컨텍스트 에서만 사용할 수 있습니다 .

  • 함수 정의 또는 함수 호출의 매개 변수입니다.
  • 키워드 뒤에 이름 토큰 in.

다른 상황에서는 awk오류가 발생합니다.

for배열의 내용을 반복하고 인쇄하려면 루프가 필요합니다 .

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.