Linux
如何從 tshark 輸出的輸出中刪除重複項
sudo tshark -i ppp0 'tcp port 80 \ and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' \ -R'http.request.method == "GET" && http.request.uri contains "/ABC/XYZ"' \ -T fields -e http.host -e http.request.uri
我正在使用上面的 tshark 行基於 /ABC/XYZ 過濾輸出。它輸出動態隨機數據,例如我在哪裡找到重複行範例:
1bcdJOSHhijklmnopqrstuvwxyz 1bcdefghijklmnopqrstuvwxyz 1bcdefghijklmnopqrstuvwxyz 3bcdefghijklmnopqrstuvwxyz 2bcdefghijklmnopqrstuvwxyz 1bcdJOSHhijklmnopqrstuvwxyz 3bcdefghijklmnopqrstuvwxyz
有什麼方法可以在不創建任何文件的情況下刪除重複項,可能正在使用某種緩衝區或管道。
或者 tshark 自己能做到嗎
編輯:我不知道為什麼,但是在我
stdbuf -o L
按照 meuh 的建議為tshark 加上前綴之後,我得到了我想要的
如果您的 tshark 有停止條件,您可以簡單地將輸出通過管道傳輸到
|sort -u
. 或者,將連續輸出通過管道傳輸到awk '{if(!seen[$0]++)print}'
您可能需要讓 tshark 不緩衝其標準輸出:嘗試在 tshark 前加上
stdbuf -o L
.