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에게 표준 출력을 버퍼링하지 말라고 지시해야 할 수도 있습니다 stdbuf -o L. tshark 앞에 .

관련 정보