grep(그렙, g/re/p)
- 텍스트 검색 기능을 가진 명령어
1. 사용법
grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ][ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separator ] ] { [ -e PatternList ... ] [ -f PatternFile ... ] | PatternList ... } File ... ] |
2. 설명
grep(Globally find Regular-Expression and Print) 은 입력 파일을 줄단위로 읽으면서 PATTERN과 일치하는 문자열이 있는지 확인해서 출력한다.
3. 옵션
- F : 정규표현식을 사용하지 않고, PATTERN과 일치하는지를 단순 확인한다.
- E : 패턴일치를 확인하기 위해서 확장 정규표현식을 사용한다.
- R : 서브 디렉토리까지 패턴 일치 문자열을 찾는다. (링크 디렉토리는 찾지 않음)
- H : 매칭되는 파일명을 출력
- L : 일반적으로 출력되는 출력을 스킵하고 각각의 입력 파일을 출력한다.
처음으로 매칭되는 파일이 나타나면 중지된다
- u : 바이너리 파일로 취급한다.
- b : 검색결과의 각 행 앞에 검색된 위치의 블록 번호 표시.
검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.
- c : 검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.
- x : pattern 이 전체 줄과 일치하는 줄만 출력한다.
- q : 출력을 억제한다. 처음으로 매칭 되는 것이 발견되면 중지한다.
- y : 문자의 경우 대소문자 구분을 무시한다.
- p : 일치하는 패턴을 포함한 전체 라인을 출력한다.
- h : 파일 이름을 출력하지 않는다.
- i : 대소문자를 구분하지 않는다. (대문자와 소문자 동일 취급)
- l : 패턴이 존재하는 파일의 이름만 출력한다.
- n : 파일 내에서 행 번호를 함께 출력한다.
(원래 문서가 가지고 있는 파일 자체의 문서번호를 출력)
- s : 에러 메시지 외에는 출력하지 않는다. 종료 상태를 검사할 때 유용하게 사용.
- v : 패턴이 존재하지 않는 행만 출력한다.
- w : 패턴 표현식을 하나의 단어로 취급하여 검색한다.
- e : PATTERN을 패턴일치 문자열로 사용한다.
- f : 패턴일치를 검사할 파일을 지정한다.
- r : 서브 디렉토리까지 패턴 일치 문자열을 찾는다.
4. grep에서 사용하는 정규표현식 메타 문자
메타 문자 | 기 능 | 사용 예 | 사용 예 설명 |
^ | 행의 시작 지시자 | '^love' | love로 시작하는 모든 행과 대응 |
$ | 행의 끝 지시자 | 'love$' | love로 끝나는 모든 행과 대응 |
. | 하나의 문자와 대응 | 'l.. e' | l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응 |
* | 선행 문자와 같은 문자의 0개 혹은 임의 개수와 대응 | ' *love' | 0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응(*앞에 공백이 있는 상태, 다른 문자가 있다면 그 문자가 0개 혹은 임의 개수의 문자 후에 love로 끝나는 경우를 말함) |
[] | [] 사이의 문자 집합 중 하나와 대응 | '[Ll]ove' | love나 Love를 포함하는 행과 대응 |
[^ ] | 문자집합에 속하지 않는 한 문자와 대응 | '[^A-K]love' | A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응 |
\< | 단어의 시작 지시자 | '\<love' | love로 시작하는 단어를 포함하는 행과 대응 (vi, grep에서 지원) |
\> | 단어의 끝 지시자 | 'love\>' | love로 끝나는 단어를 포함하는 행과 대응 (vi,grep에서 지원) |
\(..\) | 다음 사용을 위해 태그를 붙인다. | '\(lov\)ing' | 지정된 부분을 태그1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다. |
x\{m\} | 문자 x를 m번 반복한다. | 'o\{5\}' | 문자 o가 5회 연속적으로 나오는 모든 행과 대응 |
x\{m,\} | 적어도 m번 반복한다. | 'o\{5,\}' | 문자 o가 최소한 5회 반복되는 모든 행과 대응 |
x\{m,n\} | m회 이상 n회 이하 반복한다. | o\{5,10\}' | 문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응 |
5. 예제
1. 명령) 패턴문자열과 일치하는 라인을 라인넘버까지 출력. grep -n sshd /etc/passwd 1. 결과) 23:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 2. 명령) /etc/inittab 내용 중 문자 x나 e로 시작하는 모든 행을 출력. grep '^[xe]' /etc/inittab 2. 결과) x:5:respawn:/etc/X11/prefdm -nodaemon 3. 명령) /etc/inittab에 내용 중 문자 e로 끝나는 라인의 결과와 행번호를 함께 출력. grep -n 'e$' /etc/inittab 3. 결과) 11:# 1 - Single user mode 13:# 3 - Full multiuser mode 4. 명령) /var/log 디렉토리의 파일 리스트 중에 파일을 제외한 디렉토리만을 출력. ls -l /var/log | grep "^d" 4. 결과) drwxr-x--- 2 root root 4096 Feb 3 2010 audit drwxr-xr-x 2 lp sys 4096 Mar 6 04:02 cups drwxr-xr-x 2 root root 4096 Aug 27 2010 gdm drwx------ 2 root root 4096 Feb 18 06:22 httpd drwxr-xr-x 2 http http 4096 Dec 21 2007 iiim drwxr-xr-x 2 root root 4096 Jul 18 2009 mail drwx------ 2 root root 4096 Feb 22 2005 ppp drwx------ 2 root root 4096 Mar 3 11:23 samba drwxr-x--- 2 squid squid 4096 Apr 11 2008 squid drwxr-xr-x 2 root root 4096 Jun 2 2009 vbox 5. 명령) .php, .html, .exe로 끝나는 파일을 제외한 현재 경로 안에서 모든 파일 출력. ls -l | grep '[ ^.php | ^.html | ^.exe ]$' 5. 결과) drwxrwxrwx 10 webadmin webadmin 4096 Jan 4 2010 data -rw-r--r-- 1 webadmin webadmin 109 Jul 26 2009 dbconfig.php.bak drwxr-xr-x 2 webadmin webadmin 4096 Jul 26 2009 extend drwxr-xr-x 4 webadmin webadmin 4096 Jul 26 2009 geditor -rw-r--r-- 1 webadmin webadmin 78797 Jul 26 2009 HISTORY drwxr-xr-x 5 webadmin webadmin 4096 Sep 23 2009 images |
grep의 사용 방법은 | 를 이용한 조합에 따라 무궁무진하다.
'IT > linux' 카테고리의 다른 글
POST 시 수신 측에서 데이터 짤려서 받을 때 (0) | 2021.12.21 |
---|---|
리눅스 부팅 시 date 가 맞지 않을 때 해결 방법 (0) | 2021.12.20 |
mysql DB 생성 간단 정리 / 생성, 권한, 접근, 확인, 예제 (0) | 2020.03.30 |
컴파일 속도 최적화 / make option, 설명, 예제 (0) | 2020.03.30 |
리눅스 파일 내 텍스트 찾아 바꾸기 설명과 예제 (0) | 2020.03.30 |
댓글