0

我有一系列文件,我正在尝试使用 gawk 处理和验证。少数文件损坏并包含 NUL (0x00) 字符的运行,我希望将其视为无效而拒绝。

但是,gawk (4.1.1) 似乎基本上忽略了 NUL 字符。这是我调用该问题的最小代码:

BEGIN {
    FS="[#/]"   #Split at hash or slash
    OFS = ":"
}

$10 !~ "^[[:digit:]]+$" {
    print NR, $0
}

这应该打印字段 10 不是正整数的所有记录。但是,它无法打印字段 10 为 '7' 后跟一长串 NUL 的记录。

我怎样才能让 gawk 识别 NUL 字符?我试过 --posix 命令行选项无济于事。

附录:我将代码更改为:

BEGIN {
    FS="[#/]"   #Split at hash or slash
    OFS = ":"
}

$10 ~ "^7$" {
    print NR, $10
}

即,将标准更改为并在第十个字段中自行~搜索。这在第十个字段中7匹配。7NULNULNUL...但是,使用:

$10 ~ "^7\0+$"

即匹配7后跟一个或多个明确指定的NUL字符(八进制零)匹配失败。

如果这是预期的行为,有人可以向我解释吗?有什么方法可以完成我在 gawk 中想要实现的目标吗?

4

0 回答 0