我有一系列文件,我正在尝试使用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。
如何识别NUL角色?我试过--posix命令行选项无济于事。
ADDENDUM:我将代码更改为:
BEGIN {
FS="[#/]" #Split at hash or slash
OFS = ":"
}
$10 ~ "^7$" {
print NR, $10
}
即。将标准更改为~
并在第十个字段中自行搜索7
。这匹配第十个字段中的7NULNULNUL...
。但是,使用:
$10 ~ "^7\0+$"
即。匹配7
后跟一个或多个显式指定的NUL
个字符(八进制零)无法匹配。
如果这是预期的行为,有人可以向我解释一下吗?有没有办法实现我想要实现的目标?