如何在awk中声明一个数组

and*_*ndy 2 awk

我用awk写了一个脚本。我想知道如何在 awk 中声明一个数组

我已经阅读了gnu awk 手册,但没有发现任何关于declare 的内容

我想测试索引ind是否在 awk 数组中arr

echo 'awk' | awk 'BEGIN {arr} {if ('1' in arr) arr[ind] = 1}'
Run Code Online (Sandbox Code Playgroud)

我之前没有声明arr为数组并在 awk 中运行它给了我这样的错误。

awk: cmd. line:1: (FILENAME=- FNR=1) fatal: attempt to use scalar `arr' as an array
Run Code Online (Sandbox Code Playgroud)

小智 6

You can use the delete statement to declare an empty array:

BEGIN { delete arr[0] }
END { 
    print "len", length(arr)
    if ("1" in arr) {
        print "astonishing"
    }
}
Run Code Online (Sandbox Code Playgroud)