wc 명령어: 줄 수, 단어 수 세기와 wc -l 파이프 사용법

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8root 계정2026-10-29 확인

wc 명령어는 파일의 줄 수와 단어 수, 바이트 수를 세어 출력하는 리눅스 명령어입니다. 웹 서버 접속 로그 예시 파일의 줄 수를 wc -l로 세면 10이고, grep으로 404 응답만 걸러 wc -l에 넘기면 실패한 요청 수 3을 숫자 하나로 확인할 수 있습니다.

아래 로그와 파일 내용, 작업 폴더 /root/work는 예시 값입니다. 로그는 문서 예시용 IP 주소로 만든 열 줄짜리 파일이고, 다른 파일도 모두 시험용으로 만들었습니다.

1️⃣ wc 명령어 기본 사용법과 출력 읽기

명령의 기본 꼴은 wc, 옵션, 파일 순서입니다. 옵션 없이 파일만 주면 줄 수, 단어 수, 바이트 수를 차례로 출력하고 맨 끝에 파일 이름을 붙입니다.

cd /root/work
wc access.log
 10 100 766 access.log

접속 로그를 센 결과에서 10은 줄 수, 100은 단어 수, 766은 바이트 수입니다.

필요한 숫자 하나만 보려면 -l, -w, -c 가운데 하나를 붙입니다.

wc -l access.log
10 access.log
wc -w access.log
100 access.log
wc -c access.log
766 access.log

없는 파일을 주면 오류 문구가 나오고 종료 코드는 1입니다.

wc nosuch.txt
wc: nosuch.txt: No such file or directory
echo $?
1

2️⃣ wc -l 줄 수 세기와 파이프

줄 수를 셀 때 파일 이름까지 붙어 나오면, 그 숫자를 스크립트 변수에 담을 때 이름을 한 번 더 잘라 내야 합니다. 파일을 리디렉션(<)이나 파이프로 넘기면 wc는 파일 이름을 모르므로 숫자만 출력합니다.

wc -l < access.log
10
cat access.log | wc -l
10

파이프 앞에 grep을 두면 조건에 맞는 줄만 셀 수 있습니다. 응답 코드 404 앞뒤의 공백까지 넣어 찾았고, 404가 든 줄은 세 줄이었습니다.

grep ' 404 ' access.log | wc -l
3

접속한 IP가 몇 개인지 셀 때는 첫 칸만 잘라 sort -u로 겹치는 줄을 지운 뒤 셉니다. 열 줄짜리 로그에서 서로 다른 IP는 넷이었습니다.

cut -d ' ' -f 1 access.log | sort -u
192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25
cut -d ' ' -f 1 access.log | sort -u | wc -l
4

wc -l은 줄바꿈 문자의 개수를 셉니다. 그래서 마지막 줄 끝에 줄바꿈이 없는 파일은 cat으로 두 줄이 나와도 wc -l은 1을 출력합니다.

cat no-newline.txt
first line
last line
wc -l no-newline.txt
1 no-newline.txt

줄 수가 하나 적게 나오면 마지막 줄 끝에 줄바꿈이 있는지부터 확인합니다.

3️⃣ wc 옵션 정리와 -c, -m 글자 수

UTF-8에서 영문과 숫자는 한 글자가 1바이트이고, 한글과 ☕는 한 글자가 3바이트입니다. 그래서 영문만 든 파일은 -c로 센 바이트 수와 -m으로 센 글자 수가 같고, 한글이 들어가면 두 숫자가 달라집니다. 한글 메뉴 이름 두 줄과 영문 한 줄을 담은 파일로 비교했습니다.

cat menu.txt
아메리카노
카페 라테 ☕
tea
wc -c menu.txt
38 menu.txt
wc -m menu.txt
18 menu.txt

-c는 38, -m은 18로 20이 차이 났습니다. 한글 아홉 글자와 ☕가 한 글자마다 2바이트씩 더 차지한 몫이며, 한글이 든 파일의 글자 수는 -m으로 세야 실제 글자 수와 맞습니다. 측정은 C.UTF-8 로캘에서 했고, 매뉴얼 기준으로 -m은 로캘의 글자 단위로 셉니다.

-L은 가장 긴 줄의 화면 폭을 출력합니다. 접속 로그에서 가장 긴 줄은 82칸이었고, 메뉴 파일은 한글과 ☕가 한 글자에 두 칸씩 차지해 글자 7개짜리 줄이 12로 나왔습니다.

wc -L access.log
82 access.log
wc -L menu.txt
12 menu.txt

악센트가 붙은 라틴 글자는 UTF-8에서 한 글자가 2바이트입니다. café 한 줄만 든 파일로 따로 쟀습니다.

cat cafe.txt
café
wc -c cafe.txt
6 cafe.txt
wc -m cafe.txt
5 cafe.txt

-c는 6, -m은 5로 é 하나가 1바이트를 더 차지했습니다. 영문과 숫자는 1바이트, é 같은 악센트 글자는 2바이트, 한글과 ☕는 3바이트라 같은 글자 수라도 바이트 수가 달라집니다.

하려는 일에 맞는 명령과 이 글에서 센 숫자를 표로 모았습니다.

하려는 일명령이 글 실측
줄 수만 숫자로 받기wc -l < access.log10파일 이름 없이 숫자만
조건에 맞는 줄 세기grep ‘ 404 ‘ access.log | wc -l3404 응답 줄
서로 다른 값 세기cut -d ‘ ‘ -f 1 access.log | sort -u | wc -l4서로 다른 IP 개수
파일 크기 확인wc -c access.log766바이트 수
한글이 든 파일의 글자 수wc -m menu.txt18같은 파일을 -c 로 세면 38
가장 긴 줄의 화면 폭wc -L access.log82메뉴 파일은 한글 한 글자를 두 칸으로 세어 12
여러 파일 줄 수 합계wc -l *.log13total 줄에 합계

4️⃣ 리눅스 wc 여러 파일 합계

파일을 여러 개 주면 파일마다 한 줄씩 출력하고, 마지막 줄에 total로 합계를 더합니다. 접속 로그와 오류 로그를 함께 세면 total 줄의 13이 두 파일 줄 수의 합입니다.

wc access.log error.log
 10 100 766 access.log
  3  11  76 error.log
 13 111 842 total

같은 확장자의 로그를 한꺼번에 셀 때는 와일드카드를 사용합니다. 셸이 *.log를 파일 이름으로 바꿔 넘기므로 결과는 파일 이름을 하나씩 적은 것과 같습니다.

wc -l *.log
 10 access.log
  3 error.log
 13 total

확장자가 다른 파일도 이름을 이어 적으면 한 번에 셉니다. 로그 두 개와 메뉴 파일을 함께 센 결과는 total 16이었습니다.

wc -l access.log error.log menu.txt
 10 access.log
  3 error.log
  3 menu.txt
 16 total

🔲 wc 명령어 시뮬레이터

아래 시뮬레이터에서 본문의 예시 파일로 wc를 직접 입력할 수 있습니다. 칩으로 -l, -m, 파이프 세기를 해 볼 수 있고, access.log에 줄을 하나 더한 뒤 다시 세면 늘어난 숫자가 나옵니다.

wc 명령어 시뮬레이터wc · root 계정
[root@server work]#
키보드 ↑↓ 로 앞에서 쓴 명령을 다시 불러옵니다.

🔢 FAQ & 추천 콘텐츠

파일 하나에서 조건에 맞는 줄을 셀 때는 같습니다. 같은 접속 로그에서 grep -c로 같은 조건을 세도 3이 나왔습니다. grep -c는 파이프 없이 명령 하나로 끝나고, wc -l은 grep 말고도 sort나 cut 같은 다른 명령의 결과를 셀 때 사용합니다.

공백, 탭, 줄바꿈으로 나뉜 덩어리를 한 단어로 셉니다. [echo ‘log_level=warn timeout = 30’ | wc -w]의 결과는 4입니다. 공백 없이 붙은 log_level=warn은 한 단어, 앞뒤에 공백이 있는 =는 따로 한 단어로 셌습니다.

find로 파일만 골라 wc -l에 넘깁니다. 예시 폴더에서 [find /root/work -type f | wc -l]은 5를 출력했습니다. [ls | wc -l]도 같은 폴더에서 5였지만, ls는 하위 폴더 이름도 한 줄로 내보내고 그 안의 파일은 세지 않습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 0   +   3   =