리눅스 텍스트 처리 3종 — grep·sed·awk 실전
찾기는 grep, 바꾸기는 sed, 열로 잘라 계산은 awk. 로그·CSV·설정 파일을 명령 한 줄로 주무르는 도구들입니다.
12편(파이프·리다이렉션)에서 명령을 | 로 엮는 법을 봤고, 21~22편에서 셸 스크립트를 짰죠. 그 스크립트 안에서 — 로그를 뒤지고, 설정 파일을 고치고, CSV의 어떤 열을 합산하는 — 텍스트 작업을 하려면 이 세 도구가 거의 다입니다. grep(찾기) · sed(바꾸기) · awk(열로 자르고 계산). 셋 다 작은 도구지만, | 로 엮으면 어마어마합니다.
sed -i 같은 "파일 직접 수정"만 백업 주의 — 본문에서 다룸). 순서 — ① grep 찾기 → ② sed 바꾸기 → ③ awk 열·계산 → ④ 셋을 파이프로 엮기.grep — 찾기
가장 많이 쓰는 도구. grep "패턴" 파일 — 패턴이 들어 있는 줄만 출력합니다.
정규식을 알면 더 강해집니다. 기본 메타문자: ^(줄 시작) $(줄 끝) .(아무 한 글자) *(앞 문자 0회 이상) [0-9](숫자 한 자) [a-zA-Z](영문 한 자). 그리고 -E(확장 정규식)를 붙이면 |(또는) +(1회 이상) ?(0~1회) ()(그룹) {2,4}(반복 횟수)까지 쓸 수 있어요:
grep -i(대소문자 무시) · grep -v(제외) · grep -rn(코드 전체에서 찾기) · grep -c(개수) · grep -oE(추출). 그리고 다른 명령의 출력을 거를 땐 파이프로 — ps aux | grep nginx, history | grep ssh 처럼. 12편의 | 가 여기서 빛납니다.sed — 바꾸기·지우기
sed의 90%는 치환입니다: sed 's/찾을것/바꿀것/'. 슬래시가 구분자예요(다른 문자도 됨: s|a|b|).
sed -i 는 파일을 직접 고칩니다 — 되돌릴 수 없어요. 반드시 백업과 함께: sed -i.bak 's/old/new/' file → file.bak 이 생기고 file 이 수정됩니다. 또는 먼저 -i 없이 돌려서 출력으로 확인한 다음에만. rm -rf 만큼이나 sed -i 도 "한 번 더 생각"이 필요한 명령입니다(6편 참고).awk — 열로 자르고 계산
awk는 줄을 공백 기준으로 열로 쪼개 줍니다. $1=첫 열, $2=둘째 열, … $0=줄 전체. 콤마 구분이면 -F',':
패턴은 { 동작 } 앞에 붙으면 "그 패턴 줄에서만 동작", BEGIN {}·END {} 는 시작·끝에 한 번. 변수는 그냥 쓰면 됨(자동 0/빈값). 사실상 작은 프로그래밍 언어라, 셋 중 제일 강력하지만 그만큼 배울 게 많아요 — 위 패턴 대여섯 개만 알아도 일상의 90%는 됩니다.
셋을 파이프로 엮기 — 그리고 정리
진짜 힘은 조합입니다. grep 으로 거르고 → awk 로 열을 뽑고 → sort | uniq -c | sort -rn 으로 집계:
| 이럴 땐 | 이 도구 |
|---|---|
| 특정 패턴이 있는 줄 찾기 / 제외 / 개수 / 추출 | grep (`-i -v -n -r -c -oE`) |
| 문자열 치환 / 줄 삭제 / 특정 줄만 | sed (`s/// g`, `/패턴/d`, `-n Np`) — -i는 백업 필수 |
| 열(필드)로 잘라 출력 / 조건 / 합계·카운트 | awk (`$1 $0`, `-F`, `NR`, `조건`, `{s+=$n}END{}`) |
시리즈 흐름
- 1~22편 입문~고급(스크립트) ✔ 23편 텍스트 처리 3종 grep·sed·awk (이 글) ✔
- 24편 — 로그와 모니터링(
/var/log·journalctl·logrotate·자원 보기) — 오늘 배운 grep·awk 가 거기서 그대로 쓰임 - 25편 — 서버 보안 하드닝 26편 — 도커 입문 (완결)
정리하면 — grep은 "찾는다", sed는 "바꾼다", awk는 "열로 자르고 센다". 셋 다 표준으로 깔려 있고, | 로 엮으면 GUI 도구 없이도 로그·데이터를 자유자재로 다룹니다. 위 패턴들을 연습용 파일에 한 번씩 쳐보세요 — 손에 붙으면 "엑셀 열어서 한참 만지던" 일이 한 줄이 됩니다. 24편에서는 이 도구들을 들고 실제 로그를 분석하고 시스템 상태를 보는 법을 다룹니다.
참고: 본 글은 우분투 기본 도구(GNU grep/sed/gawk) 기준이며 2026년 5월 13일에 작성되었습니다. -E(확장 정규식)·-i 동작은 macOS의 BSD 버전과 다를 수 있습니다.
우분투·리눅스 입문 시리즈
찾고·바꾸고·계산하는 세 도구 — 23편입니다. 24편 "로그와 모니터링"으로 이어집니다(거기서 이 grep·awk 가 그대로 쓰여요).
다음 편은 junai.ai/blog 에서 — 26편까지 차례로 올라옵니다.