[Linux] grep 명령어 사용법 / grep example

SYSTEM/Linux / /
반응형

grep 명령어는 주로 실무에서 로그 분석 예로 apache 로그, nginx 로그 , tomcat 로그등을

분석할때 자주 사용하며 특히 침해사고 로그 분석시 필수적으로 익혀야 하는 명령어.

 

 

grep 외에 egrep fgrep 등이 있으며 잘 조합하여 사용하면 된다.

 

이외에도 awk 명령어나 sed 명령어도 자주 사용된다.


grep 명령어 사용 예 옵션


 

파일에서 문자열 검색
grep "KEYWORD" 파일명

현재 디렉토리 모든 파일에서 문자열 검색
grep "KEYWORD" *

특정 확장자를 가진 모든 파일에서 문자열 검색
grep "KEYWORD" *.log

대소문자 구분하지 않고 문자열 검색
grep -i "KEYWORD" 파일명

매칭되는 PATTERN이 존재하지 않는 라인 선택
grep -v "KEYWORD" 파일명

단어(Word) 단위로 문자열 검색
grep -w "KEYWORD" 파일명

검색된 문자열이 포함된 라인 번호 출력
grep -n "KEYWORD" 파일명

하위 디렉토리를 포함한 모든 파일에서 문자열 검색
grep -r "KEYWORD" *

최대 검색 결과 갯수 제한
grep -m 100 "KEYWORD" FILE

검색 결과 앞에 파일 이름 표시
grep -H "KEYWORD" *

문자열 aa로 시작하여 문자열 bb로 끝나는 패턴 찾기
grep "aa.*bb" *

0-9 사이 숫자만 변경되는 패턴 찾기
grep "KEYWORD[0-9]" *

문자열 패턴 전체를 정규 표현식 메타 문자가 아닌 일반 문자로 검색하기
grep -F "*[]?..." 파일명

정규 표현식 메타 문자를 일반 문자로 검색하기
grep "\*" 파일명

문자열 라인 처음 시작 패턴 검색하기
grep "^KEYWORD" 파일명

문자열 라인 마지막 종료 패턴 검색하기
grep "$KEYWORD" 파일명

 


grep 정규 표현식(정규식) 예제


대상 파일에서 linux 나 unix 문자열 검색
egrep -i '^(linux|unix)' 파일명

 

대상 파일에서 keyword11, keyword 35, keyword 77 등과 일치하는것 출력
grep 'keyword[0-9][0-9]' 파일명

숫자가 아닌 최소한 하나의 문자와 일치하는 패턴 출력
grep '[A-Za-z]' 파일명

. "w" 또는 "n" 문자가 포함된 모든 행 표시
grep [wn] 파일명

 

대상 파일에서 linux 나 unix로 시작하는 문자열 검색

egrep -i '^(linux|unix)' filename

"abc" 및 "abcd" 단어와 모두 일치하는 패턴 출력
egrep 'ab{1,2}l' 파일명

다음 예제는 최소 3개의 문자 'c'가 있는 행 출력
egrep 'c{3,}' 파일명


 

grep 정규표현식 연산자 예시


. 모든 단일 문자와 일치합니다. grep '.' file
grep 'foo.' input
? 앞의 항목은 선택 사항이며 최대 한 번만 일치합니다. grep 'keyword?' /etc/passwd
* 이전 항목은 0번 이상 일치합니다. grep 'keyword*' /etc/passwd
+ 이전 항목은 한 번 이상 일치합니다. ls /var/log/ | grep -E "^[a-z]+\.log."
{N} 앞의 항목은 정확히 N번 일치합니다. egrep '[0-9]{2} input
{N,} 이전 항목이 N번 이상 일치합니다. egrep '[0-9]{2,} input
{N,M} 선행 항목은 N번 이상 일치하지만 M번 이하 일치합니다. egrep '[0-9]{2,4} input
- 목록에서 처음 또는 마지막이 아닌 경우 또는 목록에서 범위의 끝점이
아닌 경우 범위를 나타냅니다.
grep ':/bin/[a-z]*' /etc/passwd
^ 줄의 시작 부분에 있는 빈 문자열과 일치합니다. 
또한 목록의 범위에 없는 문자를 나타냅니다.
grep '^keyword' /etc/passwd
grep '[^0-9]*' /etc/passwd
$ 줄 끝에 있는 빈 문자열과 일치합니다. grep '^$' /etc/passwd
\b 단어의 가장자리에 있는 빈 문자열과 일치합니다. vivek '\bkeyword' /etc/passwd
\B 단어의 가장자리에 있지 않은 경우 빈 문자열과 일치합니다. grep '\B/bin/bash /etc/passwd
\< 단어의 시작 부분에 있는 빈 문자열을 찾습니다. grep '\
\> 단어 끝에 있는 빈 문자열을 찾습니다. grep 'bash\>' /etc/passwd
grep '\' /etc/passwd

 

 

ngrep 사용법


 

ngrep 명령어

 

tcpdump 와같이 네트워크 상의 패킷을 수집하고 분석하는데 사용하는 리눅스 명령어

 

ngrep 명령어 사용예

 

ngrep -qd eth0 port 80

ngrep -q -W byline "^(GET|POST) .*"
ngrep -q -W byline "search" host rootkey.tistory.com and port 80

 

 

SSL 즉 https 암호화 통신을 지원 하지 않은 웹사이트는 ngrep을 사용하여 패킷을 보면

민감 정보 노출이나 해킹등에 매우 취약하다.

 

 


 

 

리눅스 기술 팁 더보기

 

 

'SYSTEM/Linux' 카테고리의 글 목록

정보 지식 공유와 나눔으로 상생의 가치 실현해요 ^^

rootkey.tistory.com

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기