0

以下のログから、INTEGER: level1(1) と Hex-STRING: を grep し、22 22 22 22 22 22 00 00 両方を比較する必要があります。

私の場合、 INTEGER: level1(1) が Hex-STRING: に対応する22 22 22 22 22 22 00 00場合、チェックポイントはパスするはずです。どうすればこれを達成できますか?

ログ:

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

すべての行をテストし、1行に両方が含まれている場合は印刷level1(1)します22 22 22 22 22 22 00 00ok

より正確にするには、次を使用できます。

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

正規表現が true の場合、変数test1以上になります。

于 2014-03-12T09:54:50.967 に答える