awk:对数组 a 的非法引用

标签 awk

我正在尝试使用这个 awk 命令:

awk -F: '
FILENAME==ARGV[1] { 
    a[FNR]=$1
}
FILENAME==ARGV[2] { 
    for(i=1;i<=length(a);i++) { 
        if(match($0,a[i])) { 
            print a[i],$1
        }
    }
}' 16.passwd 16.group | sort

但得到:
awk: line 1: illegal reference to array a

最佳答案

你的问题是这样的:

length(a)

使用 length(array) 获取数组中的元素数是 GNU awk 扩展,显然您没有使用 GNU awk。改变:
for(i=1;i<=length(a);i++)


for(i=1;i in a;i++)

它应该工作。

关于awk:对数组 a 的非法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921493/

相关文章:

bash - 选择特定字段并将其写入新文件

linux - 如何使用 awk 和 printf 从 0 而不是 1 对文本进行编号?

用于替换文件中 MAC 地址的 unix 中的正则表达式、sed 命令

escaping - 如何在awk打印语句中的参数周围添加单引号?

awk - bash 计数数字的数量

perl - 如何拆分一条线并重新排列其元素?

json - 使用 sed 或 awk 查找并替换 JSON

regex - 删除一个字符的单词

bash - awk - 如何替换 csv 文件中字符串中的分号?

parsing - awk 版本问题 - 将十六进制转换为十进制