이 명령이 uniq 수를 기준으로 정렬되지 않는 이유는 무엇입니까?

이 명령이 uniq 수를 기준으로 정렬되지 않는 이유는 무엇입니까?

로그에 다음과 유사한 줄이 있습니다.

2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.11:61618) is not a trusted source.
2015/11/02-07:55:40.515 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.11:51836) is not a trusted source.
2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.10:61615) is not a trusted source.
2015/11/02-07:55:40.515 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.10:51876) is not a trusted source.
2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.10:61614) is not a trusted source.
2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.15:61614) is not a trusted source.
2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.15:61618) is not a trusted source.
2015/11/02-07:55:39.735 INFO failed with ERR_AUTHORIZATION_REQUIRED.  (10.10.10.15:61613) is not a trusted source.

그래서 각 고유 IP 수를 정렬하기 위해 다음 명령을 시도했습니다.

grep ERR_AUTHORIZATION_REQUIRED file.log | awk '{print $6}' | cut -s -d ':' -f1 | tr -d '(' | sort | uniq -c

내가 얻는 출력은 다음과 비슷합니다.

3 10.10.10.10
2 10.10.10.11
3 10.10.10.15

따라서 (명령이 주어지면 의미가 있는)을 적용하기 전에 IP가 정렬되는 것과 같지만 및 명령을 uniq -c바꾸면 모든 IP가 .uniqsort1

답변1

맨페이지 에서 uniq:

DESCRIPTION
     Discard all but one of successive identical lines from INPUT (or standard input), writing to OUTPUT (or standard output).

여기서 중요한 단어는 "성공적"입니다. 스트림의 어떤 지점에서도 중복 항목을 검색하지 않고 바로 다음에 나오는 항목만 검색합니다. 정렬하면 모든 중복 항목이 서로 인접하게 되므로 제거(및 계산)할 수 있습니다.

관련 정보