개발 창고/Server

[Linux] How to use "grep" command

로이제로 2023. 10. 25. 22:00
반응형

How to use "grep" command

 

 

 리눅스 시스템의 CLI(Command-Line Interface) 환경에서 명령의 결과는 console로 결과가 나옵니다. (옵션에 따라 로그 파일이나 출력되지 않도록도 가능합니다.) 이 console의 결과가 적을 때는 사용자가 탐색하는데 문제가 없지만 방대한 양의 결과에서 특정 문자열이나 패턴을 갖는 라인을 찾는 경우에는 쉽지 않은 경우가 많습니다. 이 때 사용 가능한 명령어가 grep 입니다.

grep의 종류

grep 종류 내용 정규표현식 사용가능 여부
grep 다중 패턴 검색 O
egrep 정규 표현식 패턴 검색 O
fgrep 문자열 패턴 검색 X

 

사용 문법

grep --help 결과

 

주요 옵션 내용
-E --max-count=NUM 정규 표현식 패턴으로 찾음
-F --fixed-strings 문자열 패턴으로 찾음
-i --ignore-case 대소문자를 구별하지 않음
-w --word-regexp 단어와 일치하는 행만 출력
-x --line-regexp 라인과 일치하는 행만 출력
-v --invert-match 일치하지 않는 행만 출력
-m --max-count=NUM 최대로 표시될 결과 수 제한
-n --line-number 일치하는 행의 라인 번호를 포함하여 출력
-r --recursive 하위 디렉토리를 포함한 전체 파일에서 탐색
-l --files-with-match 패턴이 포함된 파일의 이름을 출력
-c --count 일치하는 행의 수를 출력

사용 예시

▶︎ /var/log/syslog에서 cron이 실행된 적 있는지 체크

$> grep 'cron' /var/log/syslog

/var/log/syslog에서 cron이라는 문자열이 포함된 결과 출력

 

▶︎ /var/log/syslog과 /var/log/syslog.1에서 cron이 실행된 적 있는지 체크

$> grep 'cron' /var/log/syslog /var/log/syslog.1

/var/log/syslog과 /var/log/syslog.1에서 cron이라는 문자열이 포함된 결과 출력

탐색된 파일 명이 보라색처럼 앞에 표시됩니다.

 

▶︎ /var/log/내 모든 파일에서 cron이 실행된 적 있는지 체크

$> grep 'cron' /var/log/*

/var/log 폴더 내에서 cron이라는 문자열이 포함된 결과 출력

두 번째 줄처럼 폴더인 경우는 무시하고 파일에서 탐색합니다.

 

▶︎ /var/log/과 하위 모든 파일에서 cron이 실행된 적 있는지 체크 (recursive)

$> grep -r 'cron' /var/log/*

 

▶︎ /var/log 디렉토리 내 확장자가 .log로 끝나는 파일에서만 'cron' 탐색

# /var/log 내 *.log 파일 탐색
$> ls -alt /var/log/*.log

# /var/log 내 *.log 파일들에서 cron 문자열 탐색
$> grep 'cron' /var/log/*.log

/var/log 디렉토리 내 *.log로 끝나느 파일 목록

 

/var/log 디렉토리에서 *.log파일들에서만 탐색

 

▶︎ /var/log 디렉토리와 하위 모든 디렉토리 내 파일에서 a 또는 b로 시작하는 모든 라인 탐색

$> grep -r '^[ab]' /var/log/*

/var/log 디렉토리와 하위 모든 디렉토리 내 파일에서 a 또는 b로 시작하는 라인 탐색

 

▶︎ /var/log 디렉토리와 하위 모든 디렉토리 내 파일에서 a로 시작해서 콜론(:)으로 끝나는 6자리 문자열 탐색

$> grep -r 'a....:' /var/log/*

/var/log 디렉토리와 하위 모든 디렉토리 내 파일에서 a로 시작해서 콜론(:)으로 끝나는 6자리 문자열 탐색

점(.)의 개수 만큼 포함한 문자열 탐색

반응형