[맥 터미널 / Unix] 파일의 글자수, 단어수, 라인수 세기 | wc command

맥 터미널을 사용하면 파일 안에 있는 글자, 단어, 문자, 문장 수를 쉽게 셀 수 있습니다. 여기서 사용될 unix command는 wc입니다.


wc command

wc 커맨드는 word count의 줄임말로 파일안에 들어 있는 글자 및 라인 수를 카운트해주는 커맨드입니다. 문법은 간단하게, 아래와 같습니다.

wc [option] [file]

많이 사용되는 옵션은 아래와 같습니다.

  • -c : Byte 수 Count
  • -m : Character 수 Count
  • -l : new line(\n) 수 Count
  • -w : 단어 수 Count

간단하게 파일에 저장되어 있는 글자 수를 세어보겠습니다.


wc command로 글자 수 세기

아래 준비된 예시를 통해 글자 수를 세어보도록 하겠습니다.

위의 예시에서 공백과 줄바꿈을 제외한 총 글자 개수는 21개입니다.

  • 준비된 예시. (6개)
  • This (4개)
  • is an (4개)
  • example (7개)

wc 커맨드 -m 옵션을 실행해서 세어보도록 하겠습니다.

공백 문자 줄바꿈 문제 포함 결과

$wc -m example4.txt
 26 example4.txt

하지만 예상과 달리 26개의 값이 나옵니다. 그 이유는 공백과 줄바꿈 문자가 포함되었기 때문입니다. 위의 예제 텍스트에선 총 2개의 공백과 3개의 줄바꿈 문자가 포함되어 있습니다. 정확한 글자수만 파악하기 위해선 문자들을 제거해야합니다. 여기서 tr 명령어를 사용할 수 있습니다.

공백 문자 제거한 후의 결과

$cat example4.txt | tr -d [:blank:] | wc -m
 24

공백 문자, 줄바꿈 문자 제거 후 결과

$cat example4.txt | tr -d [:blank:] | tr -d "\n" |wc -m
 21

wc command로 단어 수 세기

위의 예시처럼 단어별로 띄워쓰기가 잘되어 있다면, 아래 커맨드만으로 올바른 결과를 호출할 수 있습니다. 하지만, “,”같은 문자로 띄워쓰기가 뒤죽박죽하다면, 정확한 단어 수를 체크할 수 없습니다.

공백을 기준으로 단어수를 세기

This,is는 한 단어로 처리되었고, an,example 역시 한 단어로 처리되었습니다.

$wc -w example4.txt
 5 example4.txt

“,”로 끊어진 내용을 단어분리하기

총 7개의 단어가 사용자의 바램데로 출력됩니다.

$cat example4.txt | tr "," " " | wc -w
 7

wc command로 문장 수 세기

문장의 수와 line의 수는 확실히 다릅니다. 아래 예시에선 new line “\n” 문자가 단 한번(end. 뒤) 밖에 등장하질 않습니다. 그래서 wc -l command로 확인하면 분명 1이란 숫자만 나올 것입니다.

“\n” new line 개수 세기

만약 목표가 new line의 개수를 세는 것이라면,

$wc -l example4.txt
 1 example4.txt

총 문장 수 세기 (.으로 구분되어 있다는 가정)

$cat example4.txt | grep -o "\." | wc -l
 3

공백을 제외한 라인 수 세기

아래와 같이 공백들이 포함되이 있을 경우, 공백을 모두 제외해줍니다.

$cat example4.txt | sed '/^$/d'
This is an example. Period symbols indicate sentence's end.
The result has to be 3.

그리고 파이프로 wc -l를 이어주시면, 원하는 결과가 나옵니다.

$cat example4.txt | sed '/^$/d' | wc -l
 2

참고

4 COMMENTS

댓글 남기기