KOROMOON

착한 사마리아인이 되고 싶습니다.

3/14/2020

리눅스 grep 명령어


( 1 ) 설명

파일에서 특정한 패턴(문자열)을 찾는 명령어임.
이는 해당 문자열이 들어있는 파일을 찾아 그 문자열이 들어가 있는 라인(행)을 화면에 출력함.



( 2 ) 옵션 설명
kali@kali:~$ grep --help
Usage: grep [OPTION]... PATTERNS [FILE]...
각 파일에서 패턴을 검색하십시오.
Example: grep -i 'hello world' menu.h main.c
패턴은 개행으로 구분된 여러 패턴을 포함할 수 있음.

패턴 선택 및 해석:
(패턴 지정 시 정규 표현식은 작은 따음표로 묶어서 표현함)
  -E, --extended-regexp     패턴이 확장 정규 표현식임
  -F, --fixed-strings       패턴이 문자열임
  -G, --basic-regexp        패턴이 기본 정규 표현식임
  -P, --perl-regexp         패턴이 Perl 정규 표현식임
  -e, --regexp=PATTERNS     매칭되는 패턴을 사용함
  -f, --file=FILE           파일에서 패턴을 가져옴
  -i, --ignore-case         대소문자 구분을 무시함
  -w, --word-regexp         전체 단어만 일치시킴
  -x, --line-regexp         전체 라인만 일치시킴
  -z, --null-data           데이터 라인은 개행 문자가 아닌 0 바이트로 끝냄

Miscellaneous:
  -s, --no-messages         에러 메시지를 표시하지 않음
  -v, --invert-match        일치하지 않는 라인을 선택함
  -V, --version             버전 정보를 표시하고 종료함
      --help                도움말 정보를 표시하고 종료함

출력 제어:
  -m, --max-count=NUM       선택한 NUM 개의 줄 이후에 중지함
  -b, --byte-offset         출력 라인과 함께 바이트 오프셋을 출력함
  -n, --line-number         출력 라인과 함께 라인 번호를 출력함
      --line-buffered       모든 라인을 출력함
  -H, --with-filename       출력 라인함 함께 파일 이름을 출력함
  -h, --no-filename         출력 시 파일 이름을 출력하지 않음
      --label=LABEL         표준 입력 시 파일 이름을 앞에 라벨로 사용함
  -o, --only-matching       라인과 일치하는 부분만 출력함
  -q, --quiet, --silent     모든 정살 출력을 중지함
      --binary-files=TYPE   바이너리 파일 유형을 지정함
                            (TYPE 옵션은 binary, text, without-match 임)
  -a, --text                --binary-files=text 옵션과 같음
  -I                        --binary-files=without-match 옵션과 같음
  -d, --directories=ACTION  디렉토리를 처리하는 방법을 지정함
                            (ACTION 옵션은 read, recurse, skip 임)
  -D, --devices=ACTION      장치, FIFO, 소켓을 처리하는 방법을 지정함
                            (ACTION 옵션은 read, skip 임)
  -r, --recursive           --directories=recurse 옵션과 같음
  -R, --dereference-recursive  모든 심볼릭 링크를 찾음
      --include=GLOB        파일 패턴(GLOB)과 일치하는 파일만 검색함
      --exclude=GLOB        파일 패턴(GLOB)과 일치하는 파일과 디렉토리를 건너뜀
      --exclude-from=FILE   파일(FILE)에서 파일 패턴과 일치하는 파일을 건너뜀
      --exclude-dir=GLOB    파일 패턴과 일치하는 디렉토리는 건터뜀
  -L, --files-without-match 선택된 라인이 없는 파일 이름만 출력함
  -l, --files-with-matches  선택된 라이이 있는 파일 이름만 출력함
  -c, --count               파일 단 선택된 라인 수만 출력됨
  -T, --initial-tab         탭을 정렬함 (필요한 경우)
  -Z, --null                파일 이름 뒤에 0 바이트를 출력함

문맥 제어:
  -B, --before-context=NUM  선행 문맥의 NUM 라인을 출력함
  -A, --after-context=NUM   후행 문맥의 NUM 라인을 출력함
  -C, --context=NUM         출력 문맥의 NUM 라인을 출력함
  -NUM                      --context=NUM 과 동일함
      --color[=WHEN],
      --colour[=WHEN]       일치하는 문자열을 강조하기 위해 마커를 사용함
  -U, --binary              줄의 끝문자(EOL)에서 CR 문자를 제거하지 않음 (MSDOS/Windows)

파일이 '-' 인 경우 표준 입력을 읽으십시오.
파일이 없으면 '.' 을 읽으십시오.
재귀적이거나 그렇지 않으면 '-' 을 읽으십시오.
파일이 2개 미만인 경우 -h 를 가정하십시오.
행(또는 -L 인 경우 파일)을 선택한 경우 종료 상태는 0 이고 그렇지 않은 경우 1 임.
오류가 발생하고 -q 가 제공되지 않으면 종료 상태는 2 임.

Report bugs to: bug-grep@gnu.org
GNU grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <https://www.gnu.org/gethelp/>
kali@kali:~$

grep 3.3 버전에서 확인함.



( 3 ) grep 명령어에서 사용하는 정규 표현식 메타문자

^        행의 시작 지시자
$        행의 끝 지시자
.        하나의 문자와 대응
*        선행문자와 같은 문자의 0개 혹은 임의개수와 대응
[]       [] 사이의 문자 집합중 하나와 대응
[^ ]     문자집합에 속하지 않는 한 문자와 대응
\<       단어의 시작 지시자
\>       단어의 끝 지시자
\(..\)   다음 사용을 위해 태그를 붙임
x\{m\}   문자 x를 m번 반복함
x\{m,\}  적어도 m번 반복함
x\{m,n\} m회 이상 n회 이하 반복함



( 4 ) 사용예

koromoon_dic 이라는 파일내에서 koromoon 이라는 패턴이 들어간 문자열과 행번호를 출력함
grep -n koromoon koromoon_dic

현재 디렉토리의 모든 파일에서 koromoon 이라는 패턴이 들어간 파일의 이름을 출력함
grep -l koromoon *

현재 디렉토리의 모든 파일에서 koromoon 이라는 패턴이 들어가지 않은 행을 출력함
grep -v koromoon *

현재 디렉토리 및 서브디렉토리의 모든 파일에서 koromoon 이라는 패턴이 들어간 문자열 출력함
grep -r koromoon *

^는 파일의 시작을 나타내며 파일에서 k 로 시작하는 행을 찾음
grep '^k' 파일명

$는 파일의 끝을 나타내며 파일에서 koromoon 으로 끝나는 행을 찾음
grep 'koromoon$' 파일명

파일에서 koromoon 으로 시작하는 모든 단어를 찾음
grep 'koromoon*' 파일명

파일에서 k 로 시작하고 n 으로 끝나는 8 자리 단어를 찾음
grep 'k......n' 파일명

파일에서 a,b,c,d 로 시작하는 단어를 모두 찾음
grep [a-d] 파일명

파일에서 koromoon 또는 Koromoon 으로 시작하는 단어를 모두 찾음
grep [kK]oromoon 파일명

d 로 시작하는 모든 파일에서 koromoon 을 포함하는 모든 행을 찾음
grep 'koromoon' d*

지정된 두개의 파일에서 koromoon 을 포함하는 모든 행을 찾음
grep 'koromoon' 파일명1 파일명2

파일에서 a나 b로 시작되는 모든 행을 찾음
grep '^[ab]' 파일명



============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기