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

wc 명령어는 파일의 줄 수와 단어 수, 바이트 수를 세어 출력하는 리눅스 명령어입니다. 웹 서버 접속 로그 예시 파일의 줄 수를 wc -l로 세면 10이고, grep으로 404 응답만 걸러 wc -l에 넘기면 실패한 요청 수 3을 숫자 하나로 확인할 수 있습니다.
아래 로그와 파일 내용, 작업 폴더 /root/work는 예시 값입니다. 로그는 문서 예시용 IP 주소로 만든 열 줄짜리 파일이고, 다른 파일도 모두 시험용으로 만들었습니다.
1️⃣ wc 명령어 기본 사용법과 출력 읽기
명령의 기본 꼴은 wc, 옵션, 파일 순서입니다. 옵션 없이 파일만 주면 줄 수, 단어 수, 바이트 수를 차례로 출력하고 맨 끝에 파일 이름을 붙입니다.
cd /root/workwc access.log 10 100 766 access.log접속 로그를 센 결과에서 10은 줄 수, 100은 단어 수, 766은 바이트 수입니다.
필요한 숫자 하나만 보려면 -l, -w, -c 가운데 하나를 붙입니다.
wc -l access.log10 access.logwc -w access.log100 access.logwc -c access.log766 access.log없는 파일을 주면 오류 문구가 나오고 종료 코드는 1입니다.
wc nosuch.txtwc: nosuch.txt: No such file or directoryecho $?12️⃣ wc -l 줄 수 세기와 파이프
줄 수를 셀 때 파일 이름까지 붙어 나오면, 그 숫자를 스크립트 변수에 담을 때 이름을 한 번 더 잘라 내야 합니다. 파일을 리디렉션(<)이나 파이프로 넘기면 wc는 파일 이름을 모르므로 숫자만 출력합니다.
wc -l < access.log10cat access.log | wc -l10파이프 앞에 grep을 두면 조건에 맞는 줄만 셀 수 있습니다. 응답 코드 404 앞뒤의 공백까지 넣어 찾았고, 404가 든 줄은 세 줄이었습니다.
grep ' 404 ' access.log | wc -l3접속한 IP가 몇 개인지 셀 때는 첫 칸만 잘라 sort -u로 겹치는 줄을 지운 뒤 셉니다. 열 줄짜리 로그에서 서로 다른 IP는 넷이었습니다.
cut -d ' ' -f 1 access.log | sort -u192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25cut -d ' ' -f 1 access.log | sort -u | wc -l4wc -l은 줄바꿈 문자의 개수를 셉니다. 그래서 마지막 줄 끝에 줄바꿈이 없는 파일은 cat으로 두 줄이 나와도 wc -l은 1을 출력합니다.
cat no-newline.txtfirst line
last linewc -l no-newline.txt1 no-newline.txt줄 수가 하나 적게 나오면 마지막 줄 끝에 줄바꿈이 있는지부터 확인합니다.
3️⃣ wc 옵션 정리와 -c, -m 글자 수
UTF-8에서 영문과 숫자는 한 글자가 1바이트이고, 한글과 ☕는 한 글자가 3바이트입니다. 그래서 영문만 든 파일은 -c로 센 바이트 수와 -m으로 센 글자 수가 같고, 한글이 들어가면 두 숫자가 달라집니다. 한글 메뉴 이름 두 줄과 영문 한 줄을 담은 파일로 비교했습니다.
cat menu.txt아메리카노
카페 라테 ☕
teawc -c menu.txt38 menu.txtwc -m menu.txt18 menu.txt-c는 38, -m은 18로 20이 차이 났습니다. 한글 아홉 글자와 ☕가 한 글자마다 2바이트씩 더 차지한 몫이며, 한글이 든 파일의 글자 수는 -m으로 세야 실제 글자 수와 맞습니다. 측정은 C.UTF-8 로캘에서 했고, 매뉴얼 기준으로 -m은 로캘의 글자 단위로 셉니다.
-L은 가장 긴 줄의 화면 폭을 출력합니다. 접속 로그에서 가장 긴 줄은 82칸이었고, 메뉴 파일은 한글과 ☕가 한 글자에 두 칸씩 차지해 글자 7개짜리 줄이 12로 나왔습니다.
wc -L access.log82 access.logwc -L menu.txt12 menu.txt악센트가 붙은 라틴 글자는 UTF-8에서 한 글자가 2바이트입니다. café 한 줄만 든 파일로 따로 쟀습니다.
cat cafe.txtcaféwc -c cafe.txt6 cafe.txtwc -m cafe.txt5 cafe.txt-c는 6, -m은 5로 é 하나가 1바이트를 더 차지했습니다. 영문과 숫자는 1바이트, é 같은 악센트 글자는 2바이트, 한글과 ☕는 3바이트라 같은 글자 수라도 바이트 수가 달라집니다.
하려는 일에 맞는 명령과 이 글에서 센 숫자를 표로 모았습니다.
| 하려는 일 | 명령 | 이 글 실측 |
|---|---|---|
| 줄 수만 숫자로 받기 | wc -l < access.log | 10파일 이름 없이 숫자만 |
| 조건에 맞는 줄 세기 | grep ‘ 404 ‘ access.log | wc -l | 3404 응답 줄 |
| 서로 다른 값 세기 | cut -d ‘ ‘ -f 1 access.log | sort -u | wc -l | 4서로 다른 IP 개수 |
| 파일 크기 확인 | wc -c access.log | 766바이트 수 |
| 한글이 든 파일의 글자 수 | wc -m menu.txt | 18같은 파일을 -c 로 세면 38 |
| 가장 긴 줄의 화면 폭 | wc -L access.log | 82메뉴 파일은 한글 한 글자를 두 칸으로 세어 12 |
| 여러 파일 줄 수 합계 | wc -l *.log | 13total 줄에 합계 |
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에 줄을 하나 더한 뒤 다시 세면 늘어난 숫자가 나옵니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.