[Linux] 파일 내 특정 문자열 찾기 - grep 기본
Server&Network&클라우드

[Linux] 파일 내 특정 문자열 찾기 - grep 기본

728x90

 

grep 명령어 - 파일 내 특정 문자열 찾기

리눅스에서 grep 명령어는 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 찾아서 출력해주는 명령어이다.

특히, tailo이나 ls 등 다양한 명령어와 조합하여 응용되는 경우가 많아서 리눅스 시스템 내에서 grep 명령어를 능숙하게 다룰 수 있어야 한다.

  • grep 사용법
grep [옵션][패턴][파일명]
# test.txt 파일에서 'error'문자열 찾기
$ grep 'error' /test.txt

grep 의 종류 

  • grep : 다중 패턴 검색 - 정규표현식 O
  • egrep : 정규표현식 패턴검색 - 정규표현식 O
  • fgrep : 문자열 패턴 검색 - 정규표현식 X

이러한 종류가 있지만 그냥 대부분 grep만 사용하면 됨

grep 옵션

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

문자열로 찾기

grep을 사용해서 특정파일에서 원하는 문자열이 있는지 찾을 수 있다. 

# 파일명에서 원하는 "error" 문자열을 찾는데 대소문자 구분 안함
$ grep -i "error" test.log

# 원하는 문자열을 찾는데 라인 번호도 함께 출력
$ grep -n "error" test.log

# 원하는 문자열을 찾는데 50개까지만 출력
$ grep -m 50 "error" test.log 

# 해당 문자열이 포함되지 않는 라인만 출력
$ grep -v "error" test.log

# 단어 단위로 문자열 검색
$ grep -w "error test.log 

# 해당 문자열이 포함되어있는 파일 이름 표시
$ grep -H "error" *

# 하위 디렉토리에 있는 파일까지 검색
$ grep -r "error" *

정규표현식으로 찾기

grep 명령어를 사용해서 입력한 정규표현식에 해당하는 문자열도 찾을 수 있다.

# 특정 파일에서 'a'로 시작하는 모든 단어 찾기
$ grep 'a*' test.log

# abc로 시작하는 단어 모두 찾기
$ grep [a-c] test.log

# abc 또는 Abc로 시작하는 단어 모두 찾기
$ grep [aA]bc test.log

# 특정 파일에서 a나 b로 시작하는 모든 라인 출력
$ grep '^[ab]' test.log

# 특정 파일에서 ab로 시작되고 0~9의 숫자로 끝나는 모든 행 찾기
$ grep 'ab'[0-9] test.log
728x90