리눅스 grep명령어와 와일드카드

1. grep 사용법

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

1) 문자열로 찾기

  • 특정 파일에서 'dozzing' 문자열 찾기
    grep 'dozzing' 파일명
  • 여러개의 파일에서 'dozzing' 문자열 찾기
    grep 'dozzing' 파일명1 파일명2
  • 현재 디렉토리내에 있는 모든 파일에서 'dozzing' 문자열 찾기
    grep 'dozzing' *
  • 특정 확장자를 가진 모든 파일에서 'dozzing' 문자열 찾기
    grep 'dozzing' *.txt
     

2) 정규표현식으로 찾기

  • 특정 파일에서 문자열이 포함된 행을 찾는다.
    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] 파일명
     

3) 자주 사용하는 옵션

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

2. 리눅스 와일드카드

  • file명 혹은 directory 이름을 패턴의 형식으로 출력하게 만들어주는 명령어
     

1) *

  • 일치 되는 모든 "문자열"을 찾아주는 명령어
    $ ls * // 현재 디렉토리에 있는 모든 파일 list 출력
    $ ls *.txt // 현재 디렉토리에 있는 .txt 파일 list 출력
    $ ls do* // do으로 시작하는 현재 디렉토리에 있는 모든 파일 출력
    $ ls *zz* // zz가 들어있는 현재 디렉토리에 있는 모든 파일 출력
     

2) ?

  • 일치 되는 모든 "문자"를 찾아주는 명령어
  • ? 에 들어갈 수 있는 패턴을 설정해주면 ?에 들어갈 문자를 알지 못하더라도 원하는 내용을 출력하거나 삭제할 수 있음

$ ls m???.c // main.c 출력
$ ls a? // a1 a2 a3 출력
$ ls ?ozzin?.t?t // dozzing.txt 출력
 

3) []

  • [] 안에 있는 caracter들의 패턴에 일치하는 것을 찾아주는 명령어
  • [] 안에 숫자의 패턴을 넣고싶다면 [1 - 9] 를 넣게 되면 그에 맞게 찾아줌
  • [ab] 이렇게 설정하게 되면, a와 b로 시작하는 것을 찾아줌

$ ls [a]* // a1 a2 a3 a4 출력
$ ls [a][1-4] // a1 a2 a3 a4 출력
$ ls [mh]* // main.c happy.txt 출력 // *[mh] 할 경우에는 m과 h가 들어가 있는 것을 모두 출력해줌
$ ls *[2-4] // a2 a3 a4

참조 1
참조 2

By Dozzing

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다