![tshark [중복] 출력에서 중복을 제거하는 방법](https://linux55.com/image/86832/tshark%20%5B%EC%A4%91%EB%B3%B5%5D%20%EC%B6%9C%EB%A0%A5%EC%97%90%EC%84%9C%20%E2%80%8B%E2%80%8B%EC%A4%91%EB%B3%B5%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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에게 표준 출력을 버퍼링하지 말라고 지시해야 할 수도 있습니다 stdbuf -o L
. tshark 앞에 .