리눅스나 유닉스에서 많이 쓰이는 명령어로써, 특정 디렉토리 혹은 파일에서 특정한 문자열을 뽑아올 수 있는 명령어다. 가장 자주 쓰이는 형식으로는, grep [OPTIONS] PATTERN [FILE]
, grep [OPTIONS] [-e PATTERN]... [-f FILE]... [FILE...]
등이 있다[1]
옵션
옵션 | 설명 |
---|---|
--regexp=PATTERN(-e PATTERN) | 매칭을 위한 패턴 전달 |
--file=FILE(-f FILE) | 매칭을 위한 패턴이 담겨있는 파일을 전달 |
--ignore-case(-i) | 대소문자 무시 |
--invert-match(-v) | 패턴이 매칭되지 않는 라인 검색. |
--word-regexp(-w) | 단어 단위로 매칭(단어가 정확히 있는 라인만 검색) |
--line-regexp(-x) | 패턴과 정확하게 일치하는 라인만 검색 |
-y | -i와 비슷한 기능을 제공 |
--count(-c) | 파일 당 패턴이 일치하는 라인의 갯수 |
--color | 패턴화 일치하는 부분의 색을 변경해서 보여줌(색 변경은 GREP_COLORS 환경변수를 수정하면 됨.) |
--files-with-matches(-l) | 패턴과 일치하는 파일명 출력 |
--files-without-matches(-L) | 패턴과 일치하는 않는 파일명 출력. |
--max-count=N(-m N) | 패턴과 일치하는 라인을 N만큼만 보여줌. |
--only-matching(-o) | 매치되는 부분(문자열) 만 출력 |
--silent, --quiet, -q | 그냥 매치 결과는 상관안하고 아무것도 안보여줌 |
--no-messages(-s) | 존재하지 않거나 읽을 수 없는 파일에 대한 오류메시지를 출력하지 않음 |
--byte-offset(-b) | 각 줄의 오프셋을 맨 앞에 출력 |
--with-filename(-H) | 패턴과 매치된 라인의 맨 앞에 파일명을 출력 |
--no-filename(-h) | 패턴과 매치된 라인의 맨 앞에 파일명을 출력하지 않음 |
--lable=LABLE[2] | 표준 입력 파일 이름의 접두사을 라벨로 사용. |
--line-number(-n) | 매칭된 라인 앞에 라인 번호를 추가해줌. |
--initial-tab(-T) | 라인 번호나 파일명이 함께 출력될 경우, 탭과 함께 간격을 조정하여 출력 |
--unix-byte-offsets(-u)[3] | 매칭된 라인의 바이트 수를 출력하기는 하는데, 유닉스 스타일로 보여줌. |
--null(-Z)[4] | 매칭된 파일의 파일명을 줄바꿈 없이 한줄로 출력 |
--after-context=N(-A N) | 매칭된 라인 뒤에 N만큼의 라인을 추가적으로 출력 |
--before-context=N(-B N) | 매칭된 라인 전에 N만큼 라인을 추가적으로 출력 |
--context=N(-C N,-N) | 매칭된 라인 전, 후에 N만큼 라인을 추가적으로 출력 |
--group-separator=SEPARATOR | -A, -B, -C 옵션과 같이 사용할때, 패턴 기준으로 그룹핑을 해줌. |
--no-group-separator | -A, -B, -C 옵션과 같이 사용할때, 그룹핑을 없앰[5] |
--text(-a) | 바이너리 파일을 일반 텍스트 파일처럼 처리하여 패턴 검색 |
--binary-files=TYPE | 파일 헤더가 바이너리를 포함한 파일을 가리키면 TYPE 형 파일이라고 인식한다 |
--devices=ACTION(-D ACTION) | ACTION 부분엔 read 혹은 skip을 사용할 수 있고, 각각 디바이스를 검색하거나 검색하지 않는다 |
--directories=ACTION(-d ACTION) | ACTION 부분엔 read 혹은 skip을 사용할 수 있고, 각각 디렉터리에서 패턴을 검색하고, 디렉터리는 검색하지 않는 옵션이다 |
--exclude=PATTERN | PATTERN 부분은 검색대상에서 제외하고자 하는 파일명을 의미.[6] |
--exclude-from=FILE | 파일명 자체를 검색대상에서 제외. 제외하고자 하는 파일의 이름이 명확해야한다는것. |
--exclude-dir=PATTERN | 재귀 검색에서 패턴과 일치하는 디렉토리 제외 |
-I | 일치하는 데이터를 포함하고 있지 않는것처럼 바이너리 파일을 처리. 이것은 --binary-files=without-match 옵션과 동일. [7] |
--include=PATTERN | 패턴과 일치하는 파일에서만 검색함 |
--recursive(-r) | 검색 대상인 디렉토리의 하위 디렉터리의 파일도 검색( |
--dereference-recursive(-R) | 검색 대상인 디렉토리의 하위 디렉토리의 파일 및 심벌릭 파일까지 검색 |
--line-buffered | 검색이 완료된 후 검색결과를 보여주는게 아닌, 라인별로 처리되자마자 표시 |
--binary(-U) | 검색 대상 파일을 바이너리로 취급하여 캐리지 리턴이나 라인피드같은 문자를 제거 후 검색 [8] |
--null-data(-z) | 패턴이 포함된 파일을 읽어 내용 전체를 출력 |
각주
- ↑ 출처 [1]
- ↑ --with-filename 옵션과 반드시 함께 사용해야만 함
- ↑ --byte-offset 옵션과 함께 사용해야 함.
- ↑ --files-with-matches 옵션과 함께 사용해야 함.
- ↑ 기본적으로 -A, -B, -C 옵션을 사용하면, 기본적으로 --group-separator를 안 써줘도 그룹핑을 해 줌. 그걸 없애주는게 이 옵션
- ↑ 파일명은 *, ?, /를 사용할 수 있음
- ↑ 원문: Process a binary file as if it did not contain matching data; this is equivalent to the --binary-files=without-match option.
- ↑ 원문: Treat the file(s) as binary. By default, under MS-DOS and MS-Windows, grep guesses the file type by looking at the contents of the first 32KB read from the file. If grep decides the file is a text file, it strips the CR characters from the original file contents (to make regular expressions with ^ and $ work correctly). Specifying -U overrules this guesswork, causing all files to be read and passed to the matching mechanism verbatim; if the file is a text file with CR/LF pairs at the end of each line, this will cause some regular expressions to fail. This option has no effect on platforms other than MS-DOS and MS-Windows.
{{#related:Find}}