Як переглянути весь вміст у масиві awk?


41

На моє розуміння, awk масив - це щось на кшталт диктану python.

Тому я записую код нижче, щоб вивчити його:

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

Щоб отримати результат, подібний до того, який ви отримаєте зі словника Python, ви також можете надрукувати ключ:

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

Масив в awk- це не перший клас, як словник в Python. In awk, ім'я масиву без підпису може використовуватись лише у двох контекстах :

  • Параметр у визначенні функції або виклику функції.
  • Маркер імені за ключовим словом in.

В іншому контексті awkвиникне помилка.

Вам потрібна forпетля для ітерації та друку вмісту масиву:

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.