리눅스 grep 명령어 사용법

계리·2023년 4월 20일
0
post-thumbnail

grep 명령어

리눅스에서 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어이다. 특히 tail이나 ls 등 다양한 명령어와 조합하여 응용되는 경우가 많아서 리눅스에서 grep명령어를 능숙하게 사용 할 줄 알아야 하는 명령어 중 하나이다.


문자열로 찾기

  • 특정 파일에서 'test' 문자열 찾기
    grep 'test' 파일명.확장자

  • 여러 개의 파일에서 'test' 문자열 찾기
    grep 'test' 파일명1.확장자 파일명2.확장자

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

  • 특정 확장자를 가진 모든 파일에서 'test' 문자열 찾기
    grep 'test' *.txt

정규표현식으로 찾기

  • 특정 파일에서 문자열이 포함된 행을 찾는다.
    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의 숫자로 끝나고 시작되는 모든 행을 찾는다.

자주 사용하는 옵션

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

실시간 로그 보기(tail + grep)

위에서 얘기한 것 처럼 grep은 다른 명령어와 조합해서 사용할 수 있는데 주로 실시간으로 log를 확인할 때 tail과 grep 명령어를 조합해서 사용한다.

tail -f test.log | grep 192.192.192.1

위 명령어대로 사용하면 test.log 파일을 실시간으로 액세스하고 IP주소가 192.192.192.1 행만 추출 할 수 있다.


특정 파일ㅇ서 여러개 문자열 찾기

' | ' 파이프를 사용하면 grep 명령어를 여러 개 사용하여 특정 파일에서 여러 개의 문자열을 찾을 수 있다.

cat test.txt | grep 'name' | grep 'age'

위 명령어대로 입력한다면 test.txt 파일에서 name과 age가 있는 문자열을 찾을 수 있다.


최대 검색 결과 제한하기

grep으로 출력한 결과가 너무 많으면 스크롤이 너무 많이 내려가야 하는 경우가 생기게 된다.

grep -m 100 'test' test.txt

위 명령어대로 입력하면 test.txt 파일에서 test 문자열을 100개까지만 찾을 수 있다.


grep 한 결과 값 txt 파일로 저장하기

grep한 결과가 너무 길면 터미널에서 확인이 어려울 수 있다. 그래서 txt파일로 저장하여 확인해야 할 경우가 생긴다.

grep -n 'test' test.txt > trans.txt

test.txt. 파일에서 test가 있는 문자열들을 trans.txt 파일에 저장한다.


참고

profile
gyery

0개의 댓글