리눅스나 유닉스에서 많이 쓰이는 명령어로써, 특정 디렉토리 혹은 파일에서 특정한 문자열을 뽑아올 수 있는 명령어다. 가장 자주 쓰이는 형식으로는, 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. 출처 [1]
  2. --with-filename 옵션과 반드시 함께 사용해야만 함
  3. --byte-offset 옵션과 함께 사용해야 함.
  4. --files-with-matches 옵션과 함께 사용해야 함.
  5. 기본적으로 -A, -B, -C 옵션을 사용하면, 기본적으로 --group-separator를 안 써줘도 그룹핑을 해 줌. 그걸 없애주는게 이 옵션
  6. 파일명은 *, ?, /를 사용할 수 있음
  7. 원문: Process a binary file as if it did not contain matching data; this is equivalent to the --binary-files=without-match option.
  8. 원문: 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}}

• 현재 페이지 URL 줄이기