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 添加前缀后,我得到了我想要的
答案1
如果你的 tshark 有停止条件,你可以简单地将输出通过管道传输到|sort -u
.或者,将连续输出通过管道传输到
awk '{if(!seen[$0]++)print}'
您可能需要让 tshark 不缓冲其标准输出:尝试在 tshark 前面加上stdbuf -o L
.