Это просто показывает решение, которое уже упоминал @karakfa , примененное к коду OP, поэтому не принимайте этот ответ, примите его вместо этого.
Вы можете оставить отдельный массив, проиндексированный значениями, которые вы заполняете вместе с вашим основным ассоциативным массивом, и проверьте, что:
$ echo -e 'a\na\nb' |
awk '
{ array[$1] += 1; arrvals[array[$1]] }
END {
for (x in array){
# key, key[value]
print x, array[x]
}
if ("a" in array){
# acces key
print "OK for a key"
}
if ("2" == array["a"]){
# access key[value]
print "OK for a value when knowing the key"
}
if ("2" in arrvals){
# access value without knowing key ?
print "OK for any value"
} else {
print "ERROR"
}
}'
a 2
b 1
OK for a key
OK for a value when knowing the key
OK for any value
Язык awk построен на предпосылке, что должны существовать только языковые конструкции, чтобы делать то, что иначе сделать сложно. (что, очевидно, не так) - вот почему awk - крошечный, простой, эффективный, но мощный язык, в то время как другие изобилуют ненужным синтаксисом c сахар.