리눅스 기초 · 텍스트 처리 파이프라인 · 퀴즈
퀴즈: 텍스트 처리 파이프라인
문항 5개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
uniq -c 앞에 sort 를 반드시 붙여야 하는 이유는?
- uniq 가 정렬된 입력만 받도록 설계되어 있어서 오류가 나기 때문
- sort 가 없으면 개수가 항상 1 로 나오기 때문
- uniq 는 인접한 중복만 묶어서 세기 때문
- 출력을 알파벳 순으로 보여 주기 위해서
curl -s URL | jq .items | wc -l 에서 curl 이 실패했는데 스크립트가 성공으로 판정했습니다. 이유는?
- 파이프라인의 종료 코드는 기본적으로 마지막 명령의 것이기 때문
- curl 은 실패해도 종료 코드 0 을 반환한다
- jq 가 오류를 삼켰기 때문
- set -e 가 파이프라인에는 적용되지 않기 때문
로그에서 필드 하나를 뽑아 합계를 내야 합니다. 가장 적절한 도구는?
- grep
- awk
- sed
- cut
40만 줄짜리 로그를 파이프로 처리해도 메모리가 터지지 않는 이유는?
- 셸이 자동으로 파일을 나눠 읽기 때문
- 각 명령이 별도 프로세스로 동시에 실행되며 스트림으로 흘려보내기 때문
- 커널이 파이프 버퍼를 무제한으로 늘리기 때문
- grep 이 파일 전체를 인덱싱하기 때문
cat access.log | grep ERROR 를 grep ERROR access.log 로 바꾸면 무엇이 좋아지나요?
- ERROR와 error를 구분하는 방식이 달라진다
- grep이 파일 입력에서는 정규식을 더 정확히 처리한다
- 두 명령을 하나로 합쳐 메모리 사용량이 절반이 된다
- 불필요한 프로세스와 파이프가 하나 줄어든다