리눅스

[Linux] grep 사용법

부르스리 2015. 5. 7. 14:37
반응형


리눅스에서 활용도 높은 명령어 중 하나가 바로 grep 이다.


아주 강력한 검색 명령어로 파일이 수 없이 많은 안드로이드 프로젝트 같은 곳에서 무언가를 찾아내기에


정말로 필요한 명령어이다.


grep --help 를 치면 사용법이 친절하게 쭈욱 나온다.


정규 표현식 (Regexp selection and interpretation) : 패턴 지정시 사용되는 정규 표현식은 작은 따옴표('')로 묵어서 표현.

  -E, --extended-regexp

  -F, --fixed-strings

  -G, --basic-regexp      

  -P, --perl-regexp

  -e, --regexp=PATTERN

  -f, --file=FILE

  -i, --ignore-case

  -w, --word-regexp

  -x, --line-regexp

  -z, --null-data  

 PATTERN을 정규 표현식으로 확장한다.

 PATTERN을 분리된 문자열로 설정한다.

 이 PATTERN은 기본 정규식이다.

 이 PATTERN은 perl 정규식이다.

 다음 PATTERN을 정규식으로 사용한다.

 파일로부터 패턴을 포함시킨다.

 다음에 오는 문자열은 제외한다.

 독립적으로 해당 문자열과 일치하는 줄을 찾는다.

 해당 라인과 일치하는 문자열만 찾는다.

 데이터가 Null일 경우 newline을 하지 않는다.


기타 기능을 위한 옵션(Miscellaneous) :

  -s, --no-messages

  -v, --invert-match

  -V, --version

  --help

  --mmap

 에러 메시지를 보여주지 않는다.

 불일치하는 라인을 보여준다.

 version 정보를 보여준다.

 help를 보여준다.

 가능한 메모리 앱을 사용한다.


출력을 위한 제어 옵션(Output control) :

  -m, --max-count=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

  -a, --text

  -I

  -d, --directories=ACTION  

  -D, --devices=ACTION

  -R, -r, --recursive

      --include=PATTERN

      --exclude=PATTERN

      --exclude-from=FILE

  -L, --files-without-match

  -l, --files-with-matches

  -c, --count

  -Z, --null     

 NUM과 일치되면 종료한다.

 해당라인의 offset byte를 함께 출력한다.

 해당 라인 번호를 함께 출력한다.

 모든 라인은 버퍼에 저장한다.

 매치되는 파일명을 출력한다.

 해당 파일명을 출력하지 않는다.

 표준 입력 파일명을 LABEL로 출력한다.

 패턴과 매핑되는 라인만 보여준다.

 모든 출력을 하지 않는다.

 해당 TYPE을 binary-file로 간주한다.

 -a를 사용하는 --binary files=text 와 같은 역할을 한다.

 -I를 쓰면 --binary-files=without-match 와 같은 역할을 한다.

 디렉토리를 어떻게 제어할 것인지 설정한다. ACTION에는 'read', 'recurse', 'skip'

 디바이스를 어떻게 제어할 것인지 설정한다. ACTION에는 'read', 'skip'

 --directories=recurse 옵션과 같다.

 해당 패턴을 포함한다.

 해당 패턴을 스킵한다.

 파일로터 해당 패턴을 스킵한다.

 불일치하는 파일명만 출력한다.

 일치하는 파일만 출력한다.

 파일의 일치하는 라인의 수를 카운트하여 출력한다.

 파일명이 null인 것만 출력한다.


텍스트 제어 옵션(Context control) :

  -B, --before-context=NUM

  -A, --after-context=NUM 

  -C, --context=NUM        

  -NUM                      

      --color[=WHEN],

      --colour[=WHEN] 

  -U, --binary

  -u, --unix-byte-offsets

 context를 읽어 해당 line 전만 출력한다.

 해당 라인 후만 출력한다.

 해당 라인만 출력한다.

 --context=NUM 과 같다.

 When 해당하는 단어에 표시를 한다. 예를 들만 `always', `never' 또는 `auto'.


 캐리지 리턴을 삭제하지 않는다. (MSDOS)

 캐리지 리턴이 없다면 offsets으로 출력한다. (MSDOS)




내가 제일 쉽게 많이 쓰는 것은


 grep -r "find text" ./*


바로 요거다.


찾고자 하는 문자열이 어디 있는지 하부 디렉토리까지 뒤져서 다 보여달라는 명령어다.



일반적으로 많이 쓰이는 또 하나는 


현재 실행중인 프로세스 중 "java" 라는 단어가 포함된 프로세스를 찾을때

 ps -ef | grep java


서버 관리중 특정 프로세스를 찾아서 죽여야 할 때 주로 사용했었다.



암튼 grep 은 쉽고 강력해서 도스(DOS)에서 느낄 수 없는 편리함이 있다.


도스는 정말....여기까지. 끗.

반응형

'리눅스' 카테고리의 다른 글

[Linux] 이전 경로로 돌아가기  (0) 2015.04.24