您使用的sed
行看起來不錯,所以我猜想剩下的就是範圍。除非你有幾分嚴格的性能要求,我認爲這可能是工作:
(head -c1000 mytest.pcap;
tail -c+1001 mytest.pcap | head -c1000 | sed 's/.../.../g';
tail -c+2001 mytest.pcap) > mytest_mod.pcap
更新:
如果性能是一個問題,我覺得有沒有其他的選擇,而不是寫一個用途單一的程序(也許perl
將允許「單線」,但這不是我的領域)。在蟒蛇可能是這樣的:
import sys
import re
sys.stdout.write(sys.stdin.read(1000))
range = sys.stdin.read(1000)
sys.stdout.write(re.sub('\x93\x33\x59\x05\x00', '\x93\x33\x59\x00\x00', range))
while True:
buf = sys.stdin.read()
if buf:
sys.stdout.write(buf)
else:
break
注意,它強烈地依賴於read(1000)
真的會看那些1000個字節;對於這個尺寸,我相信這是相當安全的假設。
將片段保存到名爲subst_range.py
的文件,然後運行python subst_range.py <mytest.pcap> mytest_mod.pcap
。
This Works!但該文件是50MB,所以你的方法有性能問題.. – Riccardo79
我試圖寫下perl中的代碼。根據你的意見,@ volverine,是否可以直接修改mytest.pcap文件? – Riccardo79
是的,它是;只有我不確定它會幫助你做什麼,可能是磁盤空間。但除非你使用非常不尋常的設備,否則50MB不是問題,或者它是? – volferine