[Linux] 리눅스 grep 명령어 사용법, 리눅스 파일 내 문자열 찾기

grep 명령어

grep 명령어는 Global Regular Expression Print의 줄임말로 특정 파일에서 특정 문자열을 찾을 때 사용한다.

이때 grep 명령어는 단순히 문자열의 일치 여부만을 검사해서 찾는 게 아닌, 정규 표현식(Regular Expression)에 의한 패턴 매칭 방식을 사용한다.

 

이러한 grep 명령어는 보통 다른 명령어들과 조합해서 사용하는 경우가 많다. 

 

grep [옵션] [패턴] [파일명]

 

 

자주 사용하는 옵션

  • -c : 일치하는 행의 수 출력
  • -i : 대소문자 구별하지 않음
  • -v : 일치하는 않는 행만 출력
  • -n : 해당 문자열이 포함된 행의 번호를 함께 출력
  • -l : 패턴이 포함된 파일의 이름 출력
  • -H  : 패턴이 포함된 파일의 이름과 함께 내용 출력
  • -w : 단어와 일치하는 행만 출력
  • -x : 라인과 일치하는 행만 출력
  • -r : 하위 디렉토리를 포함한 모든 파일에서 검색
  • -m 숫자 : 최대로 표시될 수 있는 결과 제한
  • -E : 찾을 패턴을 정규표현식으로 검색
  • -F : 찾을 패턴을 문자열로 검색

 

여러 가지 예시

 

test.log 파일
[그림 1] test.log 파일

 

위와 같은 test.log 파일이 있다고 하자. 

 

 

1. 단순 grep

 

$ grep "Linux" test.log
# test.log 에서 "Linux" 문자열 검색

grep 예시
[그림 2] grep 결과

 

2. grep -i 

 

$ grep -i "linux" test.log
# test.log 에서 "linux" 문자열 대소문자 상관없이 검색

grep -i 예시
[그림 3] grep -i 결과

 

-i 옵션을 주지 않으면 "linux"와 "Linux"를 다른 문자열로 본다.

 

 

 

3. grep -v

 

$ grep -v "Linux" test.log
# test.log 파일에서 "Linux" 문자열이 포함되지 않은 행 출력

grep 특정 행 제외
[그림 4] grep -v 결과

 

4. grep -l, grep -H

$ grep -l "Linux" *
# 현재 디렉토리의 모든 파일 중 Linux 문자열을 포함한 파일명 출력

$ grep -H "Linux" *
# 현재 디렉토리의 모든 파일 중 Linux 문자열을 포함한 파일명과 함께 내용 출력

 

grep 파일명 포함
[그림 5] grep -i, -H 결과

 

 

여기서 [파일명] 위치에 *을 이용해 모든 파일을 대상으로 결정했다.

 

 

5. 정규표현식

 

grep은 정규표현식을 사용해 문자열을 검색할 수 있다.

 

다양한 정규표현식이 있지만 간단하게 몇 개만 소개하겠다.

 

$ grep "Line[1-3]" test.log
# "Line1", "Line2", "Line3" 을 검색

$ grep -F "Line[1-3]" test.log
# -F 옵션 사용시 [] 와 같은 정규표현식을 일반 문자로 인식

$ grep "^L" test.log
# 'L'로 시작하는 행을 출력

$ grep "de.*s" test.log
# "de"로 시작하고 "s"로 끝나는 행을 출력

 

정규표현식
[그림 6] 정규표현식

 

 

6. 명령어 조합

 

$ ps -ef | grep terminal
# 현재 실행 중인 프로세스 중 terminal 검색

 

grep 명령어 조합
[그림 7] 명령어 조합

 

grep 명령어는 다른 명령어와 조합해서 사용할 수 있다.

 

예를 들어 현재 프로세스를 보는 ps -ef 명령어의 결과를 '|' 파이프라인으로 받아 terminal이라는 문자열을 포함하는 프로세스를 검색할 수 있다.

 

이 밖에도 tail, netstat 등의 명령어와 조합할 수도 있다.

 

 

 

 


참고

 

1.https://coding-factory.tistory.com/802

2. https://devmoony.tistory.com/115

 

 

 

반응형

댓글

Designed by JB FACTORY