我有一些機管局SNMP轉儲:從一個shell腳本中提取snmpdump值(用一個確切的MIB)
1.3.6.1.2.1.1.2.0|5|1.3.6.1.4.1.9.1.1178
1.3.6.1.2.1.1.3.0|7|1881685367
1.3.6.1.2.1.1.4.0|6|""
1.3.6.1.2.1.1.5.0|6|"hgfdhg-4365.gfhfg.dfg.com"
1.3.6.1.2.1.1.6.0|6|""
1.3.6.1.2.1.1.7.0|2|6
1.3.6.1.2.1.1.8.0|7|0
1.3.6.1.2.1.1.9.1.2.1|5|1.3.6.1.4.1.9.7.129
1.3.6.1.2.1.1.9.1.2.2|5|1.3.6.1.4.1.9.7.115
而且需要1.3.6.1.2.1.1.2.0後到grep在第一個字符串的所有數據| 5 |,但不在grep本身中包含該字符串的開始。所以,我必須在grep中收到1.3.6.1.4.1.9.1.1178。我試圖使用正則表達式:
\b1.3.6.1.2.1.1.2.0\|5\|\s*([^\n\r]*)
但沒有任何成功。如果正則表達式或grep
實際上是正確的工具,您能幫我找到正確的正則表達式嗎?否則,我應該考慮什麼工具?
使用帶字段分隔符的awk作爲管道符號並打印出第三個字段,然後將結果傳遞給grep。 – dood
'\ s'和'\ b'是PCRE的擴展。它們在BRE(缺省情況下由'grep'使用)或ERE(與'egrep'或'grep -E'一起使用)中不可用。 –
順便說一句,是否有一個原因,你使用grep而不是awk或sed來完成這項工作? –