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 |