我是AWK的新手,并试图确定我的阵列是否为空,所以我可以打印一条消息。通常我习惯于长度函数,可以像这样检查,但似乎AWK没有。这是我的工作代码,如果解析完所有数据后数组中没有任何内容,我只想打印出不同的消息。
#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"
}
我试过这样的事情并且不起作用。建议?
for (var in sourceAndRestricted){
if (var > 1){
printf "\t\t"var"\n"
}
else {
print "NONE"
}
}
答案 0 :(得分:8)
使用length()
功能检查:
if ( length(sourceAndRestricted) > 0 ) {
printf "\t\t"var"\n"
}
else
print "NONE"
}
答案 1 :(得分:7)
$ 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