프로그래밍/linux

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

한코코 2022. 11. 18. 09:31

grep 명령어란?

리눅스에서 grep 명령어는 파일이나 표준입력(stdin)부터 패턴을 찾아주는 역할을 한다.

간단히 말하자면 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어.

 

 

 

grep 사용법

$ grep [옵션][패턴][파일명]
# or
$ grep [찾고자 하는 명칭][위치]

 

 

 

문자열로 찾기

# /user/tmp 디렉토리에서 'error' 문자열 찾기
$ grep 'error' /user/tmp

# text.txt 파일에서 'error' 문자열이 있는 라인 찾기
$ grep 'error' text.txt

# 여러개의 파일에서 'error' 문자열 찾기
$ grep 'error' text.txt show.txt

# 현재 디렉토리 내에 있는 모든 파일에서 'error' 문자열 찾기
$ grep 'error' *

# 특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기
$ grep 'error' *.log

 

 

 

정규표현식으로 찾기

# 특정 파일에서 문자열이 포함된 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 a로 시작하는 모든 단어를 찾는다.
grep 'a*' 파일명 

# 특정 파일에서 a로 시작하고 z로 끝나는 5자리 단어를 찾는다.
grep 'a...z' 파일명 

# 특정 파일에서 a,b,c로 시작하는 단어를 모두 찾는다.
grep [a-c] 파일명

# 특정 파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.
grep [aA]pple 파일명 

# 특정 파일에서 a나 b로 시작되는 모든 행을 찾는다.
grep '^[ab]' 파일명 

# 특정 파일에서 apple로 시작되고 0나 9의 숫자로 끝나로 시작되는 모든 행을 찾는다.
grep 'apple'[0-9] 파일명

 

 

 

자주 사용하는 옵션

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

# 파일명 목록으로 출력
grep -l FindText /user/tmp

 

 

 

옵션 혼용해서 사용하기

옵션을 다수 지정할때 -뒤에 연속으로 옵션을 기입한다.

# /user/tmp 이하의 모든 디렉토리에서 'FindText' 용어를 대소문자 구분하지 않고 검색
# -r : 하위 디렉토리를 포함한 모든 파일에서 검색.
# -i : 대소문자 구별하지 않고,
grep -ri FindText /user/tmp

 

 

 

grep의 종류

grep : 다중 패턴을 검색하고 정규표현식을 사용한다.

egrep : 정규표현식 패턴으로 검색한다. (-E 옵션과 동일)

fgrep : 문자열 패턴으로 검색하고 정규표현식을 사용하지 않는다. (-F 옵션과 동일)

 

 

 

 

다른 명령어와 같이 사용하기

# 실시간 로그 보기(tail + grep)
tail -f mylog.log | grep 192.168.15.86

# 특정 파일에서 여러개 문자열 찾기
cat mylog.txt | grep 'Apple' | grep 'Banana'

# grep한 결과값을 txt파일로 저장하기
grep -n 'Apple' mylog.txt > result.txt

 

 

출처 블로그

( 여기 설명 진짜 잘해놨다. 다른 리눅스 명령어 설명도 잘 되어있다.)