리눅스 head 명령어는 파일의 처음부터 n개의 줄을 보기 위해 씁니다. 반대의 역할을 하는 것이 tail인데요. 이는 다음에 알아보도록 하겠습니다.
- head [현재글]
- tail
이 명령어를 어떻게 사용하는지 간략하게 실습해 보겠습니다.
명령어에 대한 설명
man 페이지를 보면, 어떻게 사용하는지 설명이 있습니다.
파일들의 처음 부분을 출력하는 명령어라고 되어 있습니다. 어? 저는 head 1.txt와 같이 하나의 파일만을 가지고 사용해 왔는데요. 여러 파일에 대해서도 처리할 수 있습니다.
그리고, 자주 쓰게 되는 옵션 중 하나는 -n 옵션입니다. 이 옵션을 주지 않은 경우, default로 처음 10개의 줄을 출력하게 됩니다. 그런데, 이 옵션을 주면 해당 줄 수만큼 출력을 해 줍니다. 앞에 -가 붙는다면, 마지막 num개의 줄을 빼고 모두 출력해 줍니다. 밑에서 후술 하겠습니다.
-c의 경우, 줄이 아니라, byte 단위로 끊습니다. -c 3의 경우, 앞의 3 byte만 뽑아옵니다. 저는 이 명령어를 앞의 n줄을 뽑아오는 용도로 자주 써서, 이 옵션을 자주 쓰지는 않는 편입니다. 이것도 밑에서 후술 하도록 하겠습니다.
리눅스 head 명령어 사용해 보기
command에 대한 설명을 보았으니, 사용해 보도록 하겠습니다.
먼저, 1.txt의 내용을 보겠습니다. 1번째 줄에 1, 2번째 줄에 2, … , 13번째 줄에는 13이 있습니다.
아무 옵션 없이 head 1.txt command를 입력해 봅시다. 그러면, 1.txt의 맨 처음 10개 줄이 출력됩니다. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이 출력되겠네요. 당연하게도, 여러 파일에 대해서 처음 10개의 줄을 출력할 수 있는데요.
head 뒤에 처음 n개의 줄을 가지고 올 파일들을 입력해 주면 됩니다. 위 명령어에서는 1.txt와 2.txt의 처음 10개의 줄을 가지고 오는 것입니다. 이제, 우리는 맨 앞 n개의 줄만 출력하고 싶습니다. 이럴 때 어떤 옵션을 쓰면 된다고 했나요? -n 옵션을 쓰면 된다고 그랬어요.
뒤에 -n 3 옵션을 붙여 봅시다. 그러면, 1.txt에 있는, 맨 처음 10개 줄이 아닌, 3개의 line만 출력됨을 볼 수 있습니다. 정말 많이 쓰입니다. 상당히 높은 빈도로 쓰이니 알아두시면 좋습니다.
-n 뒤에 -NUM 형태로 오면, 마지막 NUM개의 줄을 제외한 줄을 모두 출력합니다. 1.txt는 13개의 줄이 있었습니다. 이 중 마지막 5개의 줄이 빠지면, 9, 10, 11, 12, 13이 빠지게 되는 것이지요. 결과적으로, 1부터 8까지 8개의 줄이 출력됩니다.
요약하면, 파일의 줄 수가 T라고 하면, -n 옵션 뒤에 -NUM 형식으로 주어진 경우 아래와 같이 동작합니다.
- 파일의 총 줄 수는 T였습니다.
- 이 중 맨 뒤 NUM개가 제외됩니다.
따라서, 맨 앞에서부터 T – NUM 개의 줄이 출력됩니다. 이게 0보다 작으면, 0개의 줄이 출력되겠네요.
-c 옵션에 대한 설명
-c 옵션은 byte 단위로 작동합니다. 즉, head 명령어의 옵션으로 -c 3을 주면, 타겟 파일의 처음 3개의 줄을 출력하는 것이 아니라, 3byte를 출력합니다.
locale을 확인해 볼까요? locale을 입력하면 되는데요. ko_KR.UTF-8이라고 되어 있습니다.
3.txt에는 가, 나, 다 이렇게 3개의 줄이 있습니다. UTF-8 인코딩 방식에서 한글 하나는 3byte를 차지합니다. 이제, 3.txt에서 맨 처음 위치부터 3byte 만큼 출력하면 어떻게 나올까요? 문자 ‘가’만 나오게 됩니다. 왜? ‘가’가 3byte를 차지하기 때문입니다.
위 그림은 head 3.txt -c 3 명령어를 입력했을 때 결과입니다.