linux grep 명령어 사용법

grep 명령어

grep 명령어는 리눅스 사용자들에게는 필수 유틸리티입니다. grep 명령어를 사용해서 특정 파일 혹은 디렉토리에서 어떤 유형의 문자열을 걸러서 찾을 수 있게 도와줍니다.

grep이라는 명령어의 어원 또한 이를 상징합니다. ‘[G]lobal [R]egular [E]xpression [P]rint’라는 이름의 첫 글자를 따서 만든 명령어가 grep이기 때문이죠.

이 툴은 시스템 관리자, 개발자 등 다양한 사람들에게 시스템의 사용의 편의성을 높여주고 있습니다.

grep의 다양한 옵션

grep에서 사용할 수 있는 기능들 전체를 살펴보면 아래와 같습니다.

usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]

다양한 기능들이 많지만, 흔히 사용하는 명령어의 조합 위주로 살펴보겠습니다.

기본 문법

위에서 전체 옵션을 살펴봤다면, grep의 기본 문법은 아래와 같습니다.

$ grep [options] pattern [file ...]

options

우선 options 항목에는 grep 명령어를 좀 더 세밀하게 컨트롤할 수 있는 몇몇 기능을 부여할 수 있습니다.

사람들이 많이 사용하는 주요 옵션들은 아래와 같습니다.

-r: 검색시 재귀적으로 찾기 (디렉토리 계속 파고들어가면서)

-i: 대소문자 무시하고 검색

-v: not 조건으로 검색 (-v test 라고 하면 test가 없는 것을 검색)

-n: 어느 파일의 몇 번째 줄에 있는지, 라인넘버 출력

-e: 정규식을 지정하고, 그 패턴에 맞는 것을 검색

-c: 일치하는 검색 결과의 갯수를 리턴

pattern

패턴은 내가 찾고자 하는 문자열에 대한 정규식입니다. 정규식을 지정하여 찾고자 하는 문자열을 효과적으로 추려서 볼 수 있습니다.

file …

file … 이라고 표시된 이유는, 여러 개의 파일 혹은 디렉토리를 지정할 수 있기 때문입니다. 검색하고자 하는 문자열을 한 개 혹은 여러 개의 파일/ 디렉토리 대상으로 검색할 수 있습니다.

사용 예제

$ grep "error" /var/log/syslog

/var/log/syslog 디렉토리에서 error라는 문구가 포함된 부분을 찾아줍니다.

$ grep -i "error" /var/log/syslog

위와 동일하지만, -i 옵션이 추가되었네요. -i는 대소문자를 무시하고 찾아줍니다. 따라서, ERROR라는 문구가 들어갔어도 찾아줄 것입니다.

$ grep -r "error" /var/log/

/var/log/ 하위의 모든 디렉토리에서도 erorr 문구를 찾고 싶다면, -r 옵션이 필요할 것입니다. 재귀적으로 찾아들어가기 때문에 -r 옵션을 사용하면 하위 디렉토리까지 모두 검색하게 됩니다.

$ grep -n "error" /var/log/syslog

검색 문구가 어느 파일의 몇 번째 줄에 있는지 알고 싶다면, -n 옵션을 사용하세요. 정확한 위치까지 함께 보여줍니다.

$ grep -c "error" /var/log/syslog

해당 검색어가 몇 번 나타났는지 알고 싶다면 -c 옵션을 사용하면 됩니다.

$ grep -v "error" /var/log/syslog

만약, 특정 문자를 제외한 나머지를 알고 싶다면 -v 옵션을 사용해 보세요.

그리고, 앞서 나열한 옵션은 -in -iv 등과 같이 섞어서 지정해도 됩니다.


Leave a Reply