如何从 tshark 输出的输出中删除重复项

如何从 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 Lmeuh 的建议给 tshark 添加前缀后,我得到了我想要的

答案1

如果你的 tshark 有停止条件,你可以简单地将输出通过管道传输到|sort -u.或者,将连续输出通过管道传输到

awk '{if(!seen[$0]++)print}'

您可能需要让 tshark 不缓冲其标准输出:尝试在 tshark 前面加上stdbuf -o L.

相关内容