Linux와 커맨드 라인 기초

$ cat ips.txt
10.0.0.5
10.0.0.9
10.0.0.9
10.0.0.5
10.0.0.2
10.0.0.5
$ sort ips.txt | uniq -c | sort -nr | head -n 1

선택지에서는 줄 맨 앞의 공백을 빼고 나타낸다. 위의 조작에서 마지막 명령이 출력하는 줄로 올바른 것은?

  1. A1 10.0.0.2
  2. B2 10.0.0.9
  3. C3 10.0.0.5
정답과 해설 보기

정답: C. 3 10.0.0.5

sort로 같은 줄이 이웃하도록 정렬하고, uniq -c로 이웃한 같은 줄을 하나로 합쳐 횟수를 붙이면 3 10.0.0.5, 2 10.0.0.9, 1 10.0.0.2의 3줄이 됩니다. sort -nr은 맨 앞의 수로 큰 순서대로 정렬하고, head -n 1로 첫 1줄을 꺼내므로 출력은 3 10.0.0.5입니다. uniq는 '이웃한' 같은 줄만 합치므로, 먼저 sort해 두는 것이 필수입니다. 이처럼 파이프로 명령을 연결하는 집계는 로그에서 접근이 많은 IP 주소나 자주 나오는 오류를 셀 때의 정석입니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 서버의 로그 파일 /var/log/app.log에 나중에 추가되는 줄을, 추가될 때마다 화면에 계속 표시하고 싶다. 적절한 명령은?
  2. 쉼표로 구분된 줄에서 열을 꺼내는 위의 명령의 출력으로 올바른 것은?
  3. 문자를 치환하는 위의 sed 명령의 출력으로 올바른 것은?
  4. 위의 조작에서 마지막 awk가 출력하는 내용으로 올바른 것은?
  5. GNU의 find로 'find /data -name "*.log" -mtime +7 -size +100M'을 실행했을 때 찾아지는 파일에 대한 설명으로 올바른 것은?