별의 공부 블로그 🧑🏻‍💻
728x90
728x170

grep

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

 

사용법

grep [option] [pattern] [file]

 

주요 옵션

  • 자주 사용되는 옵션
옵션 설명
-b 문자와 일치하는 줄의 시작점 출력
-c 문자와 일치하는 줄의 수 출력
-h 여러 파일에서 문자열을 찾을 때, 파일 이름이 붙는 것을 방지
-i 대소문자를 구분하지 않음.
-n 줄의 번호와 내용을 같이 출력
-v 문자가 포함되지 않은 행 출력
-w 문자와 한 단어로 일치해야 출력
-I 문자가 들어간 파일 이름을 출력
-r 하위 디렉터리에서도 문자를 찾음.
-A 특정 문자 아래 추가로 여러 행 출력
-B 특정 문자 위 추가로 여러 행 출력
  • 자세한 옵션
옵션 설명
-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 "문자열&" 문자열로 행이 끝나는 경우 출력
grep "문자1\|문자2" 여러 문자열을 한번에 검색
grep -A2 "문자열" 해당 문자열이 들어간 행을 포함해 아래 2행 출력
grep -v "문자열" 해당 문자를 제외한 행 출력
grep "문자열" * 현재 위치의 모든 파일(*)에서 특정 문자열 출력
  • 대부분의 파일에서 리다이렉션(>, >>) 또는 파이프라인(|) 을 함께 사용하여 원하는 내용만 따로 출력하거나 저장할 수 있다.

 

사용 예

예 1
  • messages.txt 파일에서 "STARRYKSS" 문자가 들어간 행만 출력한다.
# grep "STARRYKSS" messages.txt

 

예 2
  • messages1.txt, messages2.txt 파일에서 "address" 문자열이 들어간 행을 출력한다.
# grep "address" messages1.txt messages2.txt
# grep "address" *.txt

 

예 3
  • messages.txt 파일에서 "starrykss" 문자가 들어간 행을 제외한 뒤 출력한다.
# grep -v "starrykss" messages.txt

 

예 4
  • messages.txt 파일에서 "address" 문자 또는 "prefix" 문자가 들어간 행을 출력한다.
# grep "address\|prefix" messages.txt

 

예 5
  • messages.txt 파일에서 "address" 문자열이 들어간 행을 포함해 아래 2행을 출력한다.
  • messages.txt 파일에서 "domain name" 문자열이 들아간 행을 포함해 위 2행을 출력한다.
# grep -A2 "address" messages.txt
# grep -B2 "domain name" messages.txt

 

예 6
  • messages1.txt 파일에서 "<info>" 문자열이 들어간 행 중에서 "address" 문자가 들어간 행을 삭제한 후 출력한 결과를 test 파일로 저장한다.
# cat messages1.txt | grep "<info>" | grep -v "address" >> test

 

 

 

 

728x90
그리드형(광고전용)

'System Software > Linux' 카테고리의 다른 글

[리눅스 명령어] passwd  (0) 2022.03.03
[리눅스 명령어] userdel  (0) 2022.03.02
[리눅스 명령어] usermod  (0) 2022.03.02
[리눅스 명령어] pwconv / pwunconv / pwck  (0) 2022.03.02
[리눅스 명령어] su  (0) 2022.03.01
[리눅스 명령어] passwd  (0) 2022.03.01
[리눅스 명령어] adduser  (0) 2022.02.28
[리눅스 명령어] useradd / useradd -D  (0) 2022.02.28
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖