Home » OS » 리눅스 » 리눅스 head 명령어에 대해 알아봅시다.

리눅스 head 명령어에 대해 알아봅시다.

리눅스 head 명령어는 파일의 처음부터 n개의 줄을 보기 위해 씁니다. 반대의 역할을 하는 것이 tail인데요. 이는 다음에 알아보도록 하겠습니다.

  • head [현재글]
  • tail

이 명령어를 어떻게 사용하는지 간략하게 실습해 보겠습니다.


명령어에 대한 설명

man 페이지를 보면, 어떻게 사용하는지 설명이 있습니다.

[그림 1] 리눅스 head 명령어에 대한 설명

파일들의 처음 부분을 출력하는 명령어라고 되어 있습니다. 어? 저는 head 1.txt와 같이 하나의 파일만을 가지고 사용해 왔는데요. 여러 파일에 대해서도 처리할 수 있습니다.

[그림 2] -n 옵션

그리고, 자주 쓰게 되는 옵션 중 하나는 -n 옵션입니다. 이 옵션을 주지 않은 경우, default로 처음 10개의 줄을 출력하게 됩니다. 그런데, 이 옵션을 주면 해당 줄 수만큼 출력을 해 줍니다. 앞에 -가 붙는다면, 마지막 num개의 줄을 빼고 모두 출력해 줍니다. 밑에서 후술 하겠습니다.

[그림 3] -c 옵션

-c의 경우, 줄이 아니라, byte 단위로 끊습니다. -c 3의 경우, 앞의 3 byte만 뽑아옵니다. 저는 이 명령어를 앞의 n줄을 뽑아오는 용도로 자주 써서, 이 옵션을 자주 쓰지는 않는 편입니다. 이것도 밑에서 후술 하도록 하겠습니다.


리눅스 head 명령어 사용해 보기

command에 대한 설명을 보았으니, 사용해 보도록 하겠습니다.

[그림 4] 1.txt의 내용

먼저, 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를 출력합니다.

[그림 5] locale 확인하기

locale을 확인해 볼까요? locale을 입력하면 되는데요. ko_KR.UTF-8이라고 되어 있습니다.

[그림 6] 3.txt의 내용

3.txt에는 가, 나, 다 이렇게 3개의 줄이 있습니다. UTF-8 인코딩 방식에서 한글 하나는 3byte를 차지합니다. 이제, 3.txt에서 맨 처음 위치부터 3byte 만큼 출력하면 어떻게 나올까요? 문자 ‘가’만 나오게 됩니다. 왜? ‘가’가 3byte를 차지하기 때문입니다.

위 그림은 head 3.txt -c 3 명령어를 입력했을 때 결과입니다.

Leave a Comment

13 − 2 =