- . : 아무 문자 하나
- * : 앞 문자가 0번 이상 반복
- + : 앞 문자가 1번 이상 반복
- ^ : 줄의 시작
- $ : 줄의 끝
- [ ] : 괄호 안 문자 중 하나
- \d : 숫자 (확장 표현)
이 파트에서 다루는 내용
정규표현식은 '문자열의 패턴'을 표현합니다
정확한 단어가 아니라 형태로 찾아야 할 때가 있습니다. '숫자로 시작하는 줄', '이메일 형식', '특정 시간대 로그' 같은 것입니다. 정규표현식은 이런 패턴을 기호로 표현합니다.
기호가 많아 어려워 보이지만, 실무에서 자주 쓰는 것은 몇 개뿐입니다. 그 몇 개만 알아도 로그 분석이 훨씬 정확해집니다.
기본 grep 에서는 +, ? 같은 기호 앞에 역슬래시가 필요합니다. grep -E 를 쓰면 그대로 쓸 수 있어 더 읽기 쉽습니다. 헷갈리면 -E 를 기본으로 씁니다.
# ERROR 나 FATAL 로 시작하는 줄
grep -E "^(ERROR|FATAL)" app.log
# 세 자리 숫자 상태 코드가 500번대인 줄
grep -E " 5[0-9][0-9] " access.log
# 특정 시간대(14시) 로그만
grep -E "^2026-07-24 14:" app.log
# 이메일 형식 찾기
grep -E "[a-zA-Z0-9._]+@[a-zA-Z0-9.]+" contacts.txt
# 빈 줄이 아닌 줄만 (설정 파일에서 주석·공백 제거)
grep -E -v "^#|^$" app.conf마지막 예시는 주석(#으로 시작)과 빈 줄을 제외해 실제 설정만 봅니다. 긴 설정 파일을 파악할 때 자주 씁니다.
실무에서 반복되는 패턴은 정해져 있습니다
정규표현식을 처음부터 만들기보다, 자주 나오는 형태를 알아 두면 빠릅니다. 로그와 설정 파일에서 반복되는 것들입니다.
장애가 난 시간대만 보고 싶을 때 로그의 시각 형식을 패턴으로 잡습니다. 수십만 줄에서 문제 구간만 좁힐 수 있습니다.
HTTP 4xx·5xx 오류, 특정 응답 시간 초과처럼 숫자 범위를 패턴으로 찾습니다.
특정 IP나 요청 아이디가 들어간 줄을 모두 모아 한 요청의 흐름을 따라갑니다. 트랙 C의 로그 상관관계와 이어집니다.
긴 설정 파일에서 주석과 빈 줄을 빼면 실제 적용된 설정만 남습니다. 무엇이 켜져 있는지 빠르게 파악합니다.
sed는 찾은 것을 바꿉니다
grep 이 찾아서 보여 준다면, sed 는 찾아서 바꿉니다. 파일 전체에서 특정 문자열을 다른 것으로 치환할 때 씁니다. 대량 수정에 강력하지만 그만큼 조심해야 합니다.
sed 는 기본적으로 결과를 화면에 보여 주고 파일은 건드리지 않습니다. 의도한 대로 바뀌는지 먼저 확인한 뒤에 -i 로 실제 적용합니다.
-i 옵션은 파일을 직접 덮어씁니다. 잘못된 패턴으로 실행하면 원본이 훼손됩니다. 실행 전 백업(.bak)을 만들거나 화면 출력으로 검증합니다.
g 를 빼면 각 줄의 첫 번째만 바뀝니다. 한 줄에 여러 번 나오는 경우 일부만 바뀌어 예상과 다른 결과가 됩니다.
sed 's/localhost/127.0.0.1/' app.conf각 줄 첫 번째 localhost 를 치환해 화면 출력 (파일은 그대로)sed 's/localhost/127.0.0.1/g' app.conf각 줄 모든 localhost 치환 (g = 전역)sed -n '10,20p' app.log10~20번째 줄만 출력sed '/^#/d' app.conf주석 줄 삭제한 결과 출력sed -i 's/DEBUG/INFO/g' app.conf파일을 직접 수정 (-i). 되돌릴 수 없음찾기와 바꾸기를 조합합니다
실무에서는 grep 으로 대상을 확인하고, sed 로 바꾸는 흐름을 자주 씁니다. 순서를 지키면 대량 수정도 안전하게 할 수 있습니다.
- 1. grep 으로 바꿀 대상이 어디에 얼마나 있는지 확인합니다.
- 2. sed 를 -i 없이 실행해 바뀔 결과를 화면으로 검증합니다.
- 3. 원본을 백업합니다.
- 4. sed -i 로 실제 적용합니다.
- 5. grep 으로 바뀐 결과를 다시 확인합니다.
find 로 대상 파일을 찾아 sed 를 적용하면 여러 파일을 한 번에 바꿀 수 있습니다. 강력한 만큼 범위를 잘못 잡으면 피해도 큽니다. 반드시 목록부터 확인합니다.
소스 코드의 대량 치환은 IDE의 리팩터링 기능이 더 안전합니다. sed 는 로그, 설정, 텍스트 데이터처럼 구조가 단순한 대상에 씁니다.
정규표현식은 grep, sed 뿐 아니라 편집기와 여러 도구에서 같은 방식으로 쓰입니다. 한 번 익히면 오래, 여러 곳에서 쓰는 투자 대비 효과가 큰 기술입니다. 기호를 외우기보다 자주 쓰는 몇 개로 시작해 필요할 때 넓혀 갑니다.