본문 바로가기

리눅스

[draft] grep 명령어

grep 명령어

grep이란?

grep(Global Regular Expression Print)은 텍스트 파일에서 특정 패턴을 검색하는 강력한 리눅스/유닉스 명령어입니다. 파일 전체를 검색하여 정규표현식에 매칭되는 모든 행을 출력하는 것이 기본 기능입니다.

grep 패밀리 소개

grep : 기본 정규표현식 지원

egrep : 확장 정규표현식 지원 (더 많은 메타문자)

fgrep : 고정 문자열 검색 (정규표현식 미지원, 가장 빠름)

사용 예제

기본 검색

"NW"가 포함된 행 검색

grep NW datafile

d로 시작하는 모든 파일에서 "NW" 검색

grep NW d*

n으로 시작하는 행

grep '^n' datafile

4로 끝나는 행

grep '4$' datafile

정규표현식 활용

숫자 5 + 마침표 + 임의의 문자 패턴

grep '5.' datafile

w나 e로 시작하는 행

grep '^[we]' datafile

숫자가 아닌 문자가 하나라도 있는 행

grep '[^0-9]' datafile

대문자 2개 + 공백 + 대문자 1개 패턴

grep '[A-Z][A-Z] [A-Z]' datafile

단어 단위 검색

north로 시작하는 단어

grep '\<north' datafile

정확히 north 단어만 (단어 경계)

grep '\<north\>' datafile

고급 옵션

행 번호 표시

grep -n '^south' datafile

대소문자 구분 없이 검색

grep -i 'pat' datafile

패턴이 없는 행만 출력 (제외 필터)

grep -v 'Suan Chin' datafile

패턴이 있는 파일명만 출력

grep -l 'SE' *

완전한 단어만 검색

grep -w 'north' datafile

환경변수 값 검색

grep -i "$LOGNAME" datafile

특정 내용 제거하기

  • Suan Chin이 없는 행만 추출해서 새 파일 생성
grep -v 'Suan Chin' datafile > temp_file
mv temp_file datafile

로그 파일에서 에러 찾기

grep -i 'error' application.log

소스 코드에서 함수 사용處 찾기

grep -n 'function_name' *.js

TODO 주석만 추출

grep -r 'TODO' src/

특정 프로세스 확인

ps aux | grep 'nginx'

설정 파일에서 주석 제외하고 보기

grep -v '^#' /etc/config/file
grep -E -v '^#|^$' /etc/fluent-bit/fluent-bit.conf
grep -E -v '^[[:space:]]*#|^$' /etc/fluent-bit/fluent-bit.conf

백업 파일 제외하고 검색

grep -r 'pattern' . --exclude='*.bak'

egrep: 확장 정규표현식

NW 또는 EA가 포함된 행

egrep 'NW|EA' datafile

숫자 3이 한 번 이상 반복

egrep '3+' datafile

숫자 2 + (마침표 0 또는 1회) + 숫자

egrep '2.?[0-9]' datafile

no가 한 번 이상 연속

egrep '(no)+' datafile

S 다음에 h 또는 u

egrep 'S(h|u)' datafile

설정 파일에서 주석 제외하고 보기

egrep -v '^#|^$' /etc/fluent-bit/fluent-bit.conf
egrep -v '^[[:space:]]*#|^$' /etc/fluent-bit/fluent-bit.conf

fgrep: 빠르고 단순한 검색

모든 문자를 일반 문자로 처리 (정규표현식 무시)

fgrep '[A-Z]****[0-9]..$5.00' file