Linux

如何從 tshark 輸出的輸出中刪除重複項

  • April 2, 2016
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.

引用自:https://unix.stackexchange.com/questions/273806