如何检查awk数组是否为空

我是全新的AWK,并试图确定如果我的数组是空的,所以我可以打印一条消息。 通常我使用长度函数,可以像这样检查,但似乎AWK没有那些。 这里是我的工作代码,我只是想打印出一个不同的消息,如果在parsing所有的数据后没有任何数组。

#add to array if condition is met if ($2 == "SOURCE" && $4 == "RESTRICTED"){ sourceAndRestricted[$3]++; } #print out array for (var in sourceAndRestricted){ printf "\t\t"var"\n" } 

香港专业教育学院试图这样的事情,而不是工作。 build议?

 for (var in sourceAndRestricted){ if (var > 1){ printf "\t\t"var"\n" } else { print "NONE" } } 

Solutions Collecting From Web of "如何检查awk数组是否为空"

length()函数检查它:

 if ( length(sourceAndRestricted) > 0 ) { printf "\t\t"var"\n" } else print "NONE" } 
 $ cat tst.awk function isEmpty(arr, idx) {for (idx in arr) return 0; return 1} BEGIN { map[3] = 27 print isEmpty(map) delete map[3] print isEmpty(map) } $ awk -f tst.awk 0 1