0

Here from the below log I have to grep for INTEGER: level1(1) and Hex-STRING: 22 22 22 22 22 22 00 00 and compare both.

In my case, If INTEGER: level1(1) corresponds to Hex-STRING: 22 22 22 22 22 22 00 00 then the check point should pass. So how can i achieve this?

Log:

ADM-LINUX (01:50:05): SNMPv2-MIB::sysUpTime.0 = Timeticks: (21267) 0:03:32.67   SNMPv2-MIB::snmpTrapOID.0 = OID: ISIS-MIB::isisAdjacencyChange  ISIS-MIB::isisNotificationSysLevelIndex.0 = **INTEGER: level1(1)**  ISIS-MIB::isisNotificationCircIfIndex.0 = Gauge32: 67108873     ISIS-MIB::isisPduLspId.0 = **Hex-STRING: 22 22 22 22 22 22 00 00**  ISIS-MIB::isisAdjState.0 = INTEGER: up(3)
ADM-LINUX (01:50:05): 2014-03-12 14:21:04 172.16.246.121 [172.16.246.121]:
ADM-LINUX (01:50:05): SNMPv2-MIB::sysUpTime.0 = Timeticks: (21269) 0:03:32.69   SNMPv2-MIB::snmpTrapOID.0 = OID: ISIS-MIB::isisAdjacencyChange  ISIS-MIB::isisNotificationSysLevelIndex.0 = INTEGER: level2(2)  ISIS-MIB::isisNotificationCircIfIndex.0 = Gauge32: 67108874     ISIS-MIB::isisPduLspId.0 = Hex-STRING: 22 22 22 22 22 24 00 00  ISIS-MIB::isisAdjState.0 = INTEGER: up(3)
ADM-LINUX (01:50:05): 2014-03-12 14:21:04 172.16.246.121 [172.16.246.121]:
ADM-LINUX (01:50:05): SNMPv2-MIB::sysUpTime.0 = Timeticks: (21271) 0:03:32.71   SNMPv2-MIB::snmpTrapOID.0 = OID: ISIS-MIB::isisAdjacencyChange  ISIS-MIB::isisNotificationSysLevelIndex.0 = INTEGER: level1(1)  ISIS-MIB::isisNotificationCircIfIndex.0 = Gauge32: 67108875     ISIS-MIB::isisPduLspId.0 = Hex-STRING: 22 22 22 22 22 25 00 00  ISIS-MIB::isisAdjState.0 = INTEGER: up(3)
ADM-LINUX (01:50:05): 2014-03-12 14:21:04 172.16.246.121 [172.16.246.121]:
ADM-LINUX (01:50:05): SNMPv2-MIB::sysUpTime.0 = Timeticks: (21272) 0:03:32.72   SNMPv2-MIB::snmpTrapOID.0 = OID: ISIS-MIB::isisAdjacencyChange  ISIS-MIB::isisNotificationSysLevelIndex.0 = INTEGER: level2(2)  ISIS-MIB::isisNotificationCircIfIndex.0 = Gauge32: 67108875     ISIS-MIB::isisPduLspId.0 = Hex-STRING: 22 22 22 22 22 25 00 00  ISIS-MIB::isisAdjState.0 = INTEGER: up(3)
4

1 回答 1

0

用这个:

awk '/level1\(1\)/ && /22 22 22 22 22 22 00 00/ {print "ok"}' file

它将测试所有行,如果一行确实包含两者level1(1)22 22 22 22 22 22 00 00打印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

如果正则表达式为真,变量test将是1或更多。

于 2014-03-12T09:54:50.967 回答