Показать ассоциативный массив в awk
Как я могу отобразить ассоциативный массив, когда я не знаю индекса? Мой сценарий:
{
tab[$1]=tab[$1]+1
}
END{
print tab[*]#display array -> it doesn't work
}
1 ответ
Решение
Давайте рассмотрим этот тестовый файл:
$ cat file
a
b
b
c
c
c
Чтобы получить ключи ассоциативного массива в awk, мы используем for
петля формы for (key in arrayname) action
, Например:
$ awk '{tab[$1]=tab[$1]+1} END{for (key in tab)print key, tab[key]}' file
a 1
b 2
c 3
Обратите внимание, что в POSIX awk этот цикл не гарантирует возврата ключей ассоциативного массива в каком-либо конкретном порядке.