본문 바로가기
리눅스

리눅스 grep 명령어 사용법, 옵션 예제

by 미니송 2020. 3. 4.



리눅스에는 아주 유용한 명령어가 있습니다.

가장 기초적으로 시작하면서 알고 넘어가야하는 명령어인데요.

바로 grep 명령어 입니다. 그렙 명령어라고도 불립니다.

특히나 | (파이프 문자)와 같이 사용하는 경우가 많습니다.

예제로는 #ls -al | grep bin 와 같은 것이 있습니다.

ls 명령어와 grep 명령어를 함께 실행할 수 있습니다.


grep


Grep 명령어는 입력값에 대한 내용 중에서 특정 문자열을 찾을 수 있는 기능을 가지고 있습니다.


그렙 명령어 설명을 보면 파일에서 input을 받아서 검색을 한다고 써있습니다. 그리고 default 값으로 grep은 문자열이 매치가 되는 라인을 출력해줍니다.


그리고 egrep과 fgrep 그리고 rgrep이 있다고 합니다. Egrep은 grep -E로 쓰는 것과 같으며 fgrep은 grep -F로 사용하는 것과 같습니다. 또한 rgrep은 grep -r로 사용하는 것 과 같습니다.



grep 명령어 옵션


가장 기본적인 옵션부터 설명을 드리겠습니다.

#man grep 으로 설명을 보면 옵션들을 볼 수 있습니다.



grep option


가장 기본적인 help와 version 옵션입니다.


#grep --help를 통해서 도움말을 볼 수 있습니다.

#grep -V 혹은 #grep --version 으로 grep의 버전이 어떻게 되는지 확인할 수 있습니다.


fgrep


다음은 어떤 값으로 매칭시킬 것인지 고르는 옵션입니다. 위의 설명과 같이 egrep과 fgrep을 사용할 수 있습니다. 


-E, --extended-regexp

Extended-regular expression 한글로 바꾸면 확장 정규표현식 정도가 되겠습니다.


-F, --fixed-strings

Fixed-strings는 정규표현식을 사용하지 않는 문자 그대로를 의미합니다.


-G, --basic-regexp

Basic-regular expression 기본 정규표현식을 사용해서 매칭시키며 default(기본값)으로 사용됩니다.


-P, --perl-regexp

Perl-regular expression 펄 정규표현식을 사용해서 매칭시키게 됩니다.



grep pattrn


또한 대문자 옵션이 아닌 소문자 옵션을 사용해서 어떻게 출력을 시킬지 정할 수 있습니다. 옵션은 다음과 같습니다.


-e PATTERN, --regexp=PATTERN

패턴을 사용하여 찾을 문자열을 적어줍니다. 여러 패턴을 찾거나 -로 시작하는 패턴을 보호하는데 사용합니다.


-f FILE, --file=FILE

파일에서 라인마다 패턴을 검색합니다. 파일이 비어있으면 매칭이 되지 않습니다.


-i, --ignore-case

주어진 패턴이나 입력파일에서 대소문자를 무시하고 검색할 수 있습니다.


-v, --invert-match

Invert라고 하는 문자열이 제외된 라인을 출력해줍니다. 다음 검색어를 포함하지 않은 라인을 출력해 줍니다.


-x, --line-regexp

라인(전체줄)에서 정확하게 매치되는 라인만 정해서 출력해줍니다.


리눅스


이외에도 다양한 옵션이 있으며 자주사용하는 옵션들을 적어보겠습니다.


-n : 라인 번호를 출력하여 결과값 표현

-o : 검색하여 매치된 문자열만 표시

-z : 라인을 검색할 경우 newline(\n)이 아닌 NULL(\0)로 구분.

-c : 파일에서 패턴이 일치하는 라인의 개수 출력 (count의 의미)

-m : 검색을 할 경우 최대 결과 개수 제한

-d : 디렉토리 처리 방식을 지정할 수 있음 (recurse, skip, read)

-r : 하위 디렉토리 탐색 (-d recurse와 같은 의미)

-I : 바이너리 파일은 검사X

-b : 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.

-H : 검색 결과 출력 라인 앞에 파일 이름 표시

-h : 검색 결과 출력 시, 파일 이름 무시

-q : 검색 결과를 출력하지 않음

-D : 장치 파일 처리 방식 지정 (read, skip)

-R : 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색

-L : PATTERN이 존재하지 않는 파일 이름만 표시

-l : 패턴이 존재하는 파일 이름만 표시

-a : 바이너리 파일을 텍스트 파일처럼 처리


옵션 예제


grep 명령어


다양하게 옵션을 사용하여 grep을 사용하면 효율성이 더욱 증가됩니다.

-n 과 같은 옵션은 번호를 출력해주니 몇줄이 나왔는지 결과값이 몇개나 되는지 세는데 유용하게 사용할 수 있습니다.

위를 보면 .(점)을 검색해서 나온 결과값입니다.

현재 파일을 보여주는 명령어와 검색하여 라인의 개수를 세주는 명령어를 동시에 사용한 것입니다.

이렇게 이용하면 파일에서 문자열을 찾거나 배쉬셸에서 원하는 결과값이 있는 라인만을 보는데 유용하게 사용할 수 있습니다.



댓글