下面您將看到從專有路由設備的32b內存轉儲中字符串'octeon'的一小段匹配摘錄。正如你所看到的,它包含一些調整後的ASCII,從行尾延伸到16個字符,然後是四個32位字(當然每個8個字符),然後是地址偏移量。正則表達式僅匹配行尾的X個字符
000b27a0: 41646a75 7374206f 6374656f 6e5f6970 Adjust octeon_ip
000b2850: 73740a00 00000000 6f637465 6f6e5f72 st......octeon_r
000b2870: 5f73697a 65000000 6f637465 6f6e5f72 _size...octeon_r
000b2990: 6164696e 672e0a00 6f637465 6f6e5f72 ading...octeon_r
000b29b0: 785f7369 7a650000 6f637465 6f6e5f72 x_size..octeon_r
000b3050: 780a0000 00000000 6f637465 6f6e5f70 x.......octeon_p
000b3650: 6564204f 6374656f 6e206d6f 64656c0a ed Octeon model.
000bade0: 20307825 71780a00 6f637465 6f6e5f6c 0x%qx..octeon_l
000bafd0: 696e6720 4f637465 6f6e2045 78656375 ing Octeon Execu
000bd710: 6564204f 6374656f 6e204d6f 64656c21 ed Octeon Model!
000bd950: 4f435445 4f4e2070 61737320 3120646f OCTEON pass 1 do
000bda20: 6564206f 6374656f 6e206d6f 64656c3a ed octeon model:
雖然這一數據包含了一些有用的信息,可悲的是,操作系統(HiveOS)沒有試圖連續分配內存或合併不同的堆(爲什麼要?),所以絕大多數的記憶是一個貧瘠的尚未成型的堆。
0004d6b0: 00000000 00000000 00000000 00000000 ................
0004d6c0: 00000000 00000000 00000000 00000000 ................
0004d6d0: 00000000 00000000 00000000 00000000 ................
0004d6e0: 00000000 00000000 00000000 00000000 ................
0004d6f0: 00000000 00000000 00000000 00000000 ................
0004d700: 00000000 00000000 00000000 00000000 ................
0004d710: 00000000 00000000 00000000 00000000 ................
0004d720: 00000000 00000000 00000000 00000000 ................
0004d730: 00000000 00000000 00000000 00000000 ................
0004d740: 00000000 00000000 00000000 00000000 ................
0004d750: 00000000 00000000 00000000 00000000 ................
我想快速,高效地拔出匹配一些任意的正則表達式模式具有一定規模的字符串([a-zA-z]
想到) 你自然會認爲運行常年對象轉儲檢查最喜歡的「弦」會產生一個結果,但md
util是一個殘酷的情婦 - 由於存在ascii編碼的十六進制銀行&地址,它將每一行標識爲包含「字符串」。
當然,我們都知道存在一個簡單的腳本解決方案(for line in hexdump: f.write(line[-16:])
+ grep '[A-z]' f
)。
但是,有時候我會覺得我應該理解這些卑鄙的壓迫,但是更好地理解了正則表達式,而不是回到易於使用的新穎編程語言。我真的覺得我無法開始發展真正的Unix領袖,直到我用各種流編輯器和Awk腳本的正則表達式完全替代了我的整個
開發工具鏈
生活。
如何匹配[a-zA-z]
從行尾的一定數量的字符(在我的情況下,16) - 它看起來像一個漂亮精巧的建築,但+,?的所有組合。 {16}以及在過去幾分鐘內對我有意義的事情已經及時地失敗了。
也許我錯誤地理解了這個請求。你想獲得每行的最後16個字符,或*只從最後16個字符中提取字母*? – TLS 2012-03-15 17:40:53