我有一系列文件,我正在尝试使用 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 中想要实现的目标吗?