모두가 처음 잡는 텍스트 검색 도구
grep = 'globally search a regular expression and print'. 패턴 매칭 줄을 출력. 기본 basic regex (BRE) 문법은 어색해 — 거의 모두 -E (extended) 또는 -P (Perl) 추가.
닳도록 쓰는 flag
-i— 대소문자 무시.-r/-R— 재귀.-n— 줄 번호.-v— invert. 매치 안 되는 줄.-l— 매치 있는 파일 이름만.-c— 매치 개수.-A 3— 매치 뒤 3 줄 context.-B 3앞,-C 3양쪽.-E— extended regex (alternation, +, ?, {n,m} 백슬래시 없이).--include='*.py'/--exclude— 파일 필터.--color=auto— 매치 강조.
흔한 패턴
- 재귀 + 대소문자 무시:
grep -rin 'TODO' . - 매치된 파일 이름만:
grep -rl 'pattern' src/ - 바이너리 건너뛰기:
grep -rn --binary-files=without-match 'pattern' . - 파일별 개수:
grep -rc 'TODO' .가 file:count. - extended regex:
grep -E 'foo|bar' file
Exit code
0 = 매치 있음, 1 = 없음, 2 = 에러. 그래서 grep -q 'pattern' file 이 스크립트의 완벽한 존재 검사: if grep -q ERROR build.log; then ...; fi.
grep 이 안 맞는 경우
여러 줄 패턴, 구조화 데이터 (JSON / YAML), 심볼 인식 검색은 modern-tools 트랙의 ripgrep (rg), jq, ast-grep.