danbibibi
article thumbnail
Published 2024. 3. 27. 16:50
[Linux] grep 정리 프로그래밍/Linux

grep

  • 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어
  • 단순 문자열 매칭뿐만 아니라 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식도 사용 가능

 

정규표현식

메타 문자 (Meta Character) 설명
. 정확히 1개의 문자와 매치
* 앞 문자가 0회 이상 매치
{n} 앞 문자가 정확히 n회 매치
{n,m} 앞 문자가 n회 이상 m회 이하 매치
[ ] 대괄호에 포함된 문자 중 한개와 매치
[^ ] 대괄호 안에서 ^뒤에 있는 문자들을 제외
[ - ] 대괄호 안 문자 범위에 있는 문자들 매치
() 표현식을 그룹화
^ 문자열 라인의 처음
$ 문자열 라인의 마지막
? 앞 문자가 0 또는 1회 매치 (확장 정규 표현식)
+ 앞 문자가 1회 이상 매치 (확장 정규 표현식)
| 표현식 논리 OR (확장 정규 표현식)

 

grep 명령어 옵션

OPTION 설명
-E PATTERN을 확장 정규 표현식(Extended RegEx)으로 해석
-F PATTERN을 정규 표현식(RegEx)이 아닌 일반 문자열로 해석
-G PATTERN을 기본 정규 표현식(Basic RegEx)으로 해석
-P PATTERN을 Perl 정규 표현식(Perl RegEx)으로 해석
-e 매칭을 위한 PATTERN 전달
-f 파일에 기록된 내용을 PATTERN으로 사용
-i 대/소문자 무시
-v 매칭되는 PATTERN이 존재하지 않는 라인 선택
-w 단어(word) 단위로 매칭
-x 라인(line) 단위로 매칭
-z 라인을 newline(\n)이 아닌 NULL(\0)로 구분
-m 최대 검색 결과 갯수 제한
-b 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력
-n 검색 결과 출력 라인 앞에 라인 번호 출력
-H 검색 결과 출력 라인 앞에 파일 이름 표시
-h 검색 결과 출력 시, 파일 이름 무시
-o 매치되는 문자열만 표시
-q 검색 결과 출력하지 않음
-a 바이너리 파일을 텍스트 파일처럼 처리
-I 바이너리 파일은 검사하지 않음
-d 디렉토리 처리 방식 지정. (read, recurse, skip)
-D 장치 파일 처리 방식 지정. (read, skip)
-r 하위 디렉토리 탐색
-R 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색
-L PATTERN이 존재하지 않는 파일 이름만 표시
-l 패턴이 존재하는 파일 이름만 표시
-c 파일 당 패턴이 일치하는 라인의 갯수 출력

 

grep 사용 예시

$ grep [OPTION] [PATTERN] [FILE]

 

#대상 파일에서 문자열 검색
$ grep "STR" [FILE]

# 현재 디렉토리 모든 파일에서 문자열 검색
$ grep "STR" *

# 특정 확장자를 가진 모든 파일에서 문자열 검색
$ grep "STR" *.ext

# A로 시작하여 B로 끝나는 패턴 찾기
$ grep "A.*B" *

# 0-9 사이 숫자만 변경되는 패턴 찾기
$ grep "STR[0-9]" *

# 문자열 패턴 전체를 정규 표현식 메타 문자가 아닌 일반 문자로 검색하기	
$ grep -F "*[]?..." [FILE]

# 정규 표현식 메타 문자를 일반 문자로 검색하기	
$ grep "\*" [FILE]

# 문자열 라인 처음 시작 패턴 검색하기	
$ grep "^STR" [FILE]

# 문자열 라인 마지막 종료 패턴 검색하기	
$ grep "$STR" [FILE]
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로