C.W.K.
Stream
Lesson 07 of 10 · published

grep 와 ripgrep

~10 min · grep, ripgrep, shell

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

터미널의 정규식 도구

쉘 레벨 텍스트 검색에 표준 도구가 grep. 현대 대체가 ripgrep (rg) — Rust 작성, RE2 급 엔진, 기본 재귀, .gitignore 존중, blazing fast.

grep flavor

POSIX grep 이 메타문자 처리 다른 세 모드:

  • BRE (기본): ?, +, {}, (), | 가 escape 안 하면 LITERAL. grep 'foo\(bar\)'
  • ERE (grep -E 또는 egrep): 현대 문법 — 메타문자가 escape 없이 동작. grep -E 'foo(bar)'
  • PCRE (grep -P): 풀 Perl-호환. Lookaround, backreference, named 그룹. 항상 가능 X (grep 빌드 의존).

기본은 -E. PCRE 기능 필요시 -P. 정규식과 그냥 grep 회피 — 함정 너무 많음.

ripgrep — 현대 기본

rg 가 RE2 식 문법 (lookaround X, backreference X, but linear time). 기본 재귀, .gitignore 존중, Unicode 잘 지원, 큰 코드베이스에 grep 보다 극적 빠름.

흔한 플래그:

  • rg pattern — 현재 디렉토리에 재귀 검색
  • rg -i pattern — case-insensitive
  • rg -n pattern — 줄 번호 표시 (interactive 모드 기본)
  • rg -l pattern — 매칭 있는 파일명만 리스트
  • rg -A 3 pattern — 각 매칭 후 3 줄 컨텍스트
  • rg --pcre2 pattern — PCRE2 활성 (lookaround, backreference)
  • rg -r 'replacement' pattern — 치환 미리보기 (그룹은 $1, $2)

Code

grep vs ripgrep·bash
# POSIX grep BRE — escape 필요
grep 'foo\(bar\)' file.txt

# grep ERE — 현대
grep -E 'foo(bar)' file.txt

# grep PCRE — 풀 기능 (가능할 때)
grep -P '(?<=user_)\w+' file.txt

# ripgrep — 기본 재귀, .gitignore 존중
rg 'TODO|FIXME' .

# ripgrep + 줄 번호 + case insensitive
rg -ni 'error' logs/

# ripgrep + lookaround 위한 PCRE
rg --pcre2 '(?<=password = )\S+' config/

# 치환 미리보기
rg -r 'NEW: $1' '(\d+)' file.txt

# 패턴 포함 파일 찾기
rg -l 're.compile' .

# 특정 파일 타입만 검색
rg -t py 'import re' .

External links

Exercise

ripgrep 없으면 설치 (macOS 면 brew install ripgrep). 코드 프로젝트에서 rg 'TODO' .. 그 다음 rg -t py 'import re' . 로 정규식 사용 모든 Python 파일 찾기. 등가 grep -r 명령과 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.