Awk 在使用perl的unix平台中,从snmp::GetTrapd Log中,我必须grep对应于十六进制字符串值的整数:级别

Awk 在使用perl的unix平台中,从snmp::GetTrapd Log中,我必须grep对应于十六进制字符串值的整数:级别,awk,grep,snmp,snmp-trap,Awk,Grep,Snmp,Snmp Trap,在下面的日志中,我必须grep整数:level1(1)和十六进制字符串:22 00,并对两者进行比较 在我的例子中,如果整数:level1(1)对应于十六进制字符串:22 00,那么检查点应该通过。那么我如何才能做到这一点呢 日志: 使用以下命令: awk '/level1\(1\)/ && /22 22 22 22 22 22 00 00/ {print "ok"}' file 它将测试所有行,如果一行同时包含level1(1)和22 00 00printok 要使其更准确,

在下面的日志中,我必须grep整数:level1(1)和十六进制字符串:
22 00
,并对两者进行比较

在我的例子中,如果整数:level1(1)对应于十六进制字符串:
22 00
,那么检查点应该通过。那么我如何才能做到这一点呢

日志:

使用以下命令:

awk '/level1\(1\)/ && /22 22 22 22 22 22 00 00/ {print "ok"}' file
它将测试所有行,如果一行同时包含
level1(1)
22 00 00
print
ok

要使其更准确,您可以使用:

awk '/INTEGER: level1\(1\)/ && /Hex-STRING: 22 22 22 22 22 22 00 00/ {print "ok"}' file

如果要将其存储在变量中:

test=$(awk '{f+=(/level1\(1\)/ && /22 22 22 22 22 22 00 00/)?1:0} END {print f}' file)
echo $test
1
如果regex为true,变量
test
将为
1
或更多

test=$(awk '{f+=(/level1\(1\)/ && /22 22 22 22 22 22 00 00/)?1:0} END {print f}' file)
echo $test
1