티스토리 뷰

  grep 명령어 

grep 명령은 파일에서 특정한 패턴(문자열)을 찾는 명령이다. 해당 문자열이 들어 있는 파일을 찾아 그 문자열이 들어가 있는 라인(행)을 화면에 출력한다.

물론, 한 디렉토리 내에서 지정한 패턴을 포함하는 파일을 출력할 수도 있다.

grep 명령은 하나 이상의 파일로부터 프로그램 수정 등을 위해 변수, 또는 함수명을 찾을때 많이 사용된다. 



  grep [옵션] [정규표현식(문자열)] [찾는대상이되는 파일명]


↑data.txt 안에 수 많은 문자열이 있다. 

  # 이중에 내가 원하는 문자열이 millionth라면 이 문자열을 찾고자 하나하나 찾아 볼 수 없다.



↑grep 명령을 이용해서 원하는 문자열을 찾아 그 행을 출력 할 수 있다.

  # " " (더블쿼터) 는 문자열로 인식하게 하는 중요한 기능 

  # 특수문자를 문자열 그대로 인식해서 찾고 싶다면 " "를 꼭 써야한다.





  grep 패턴 * 

  - 패턴 지정에서 사용되는 정규 표현식은 작은 따옴표 (' ')로 묶어서 표현한다.



↑원하는 패턴과 매칭되는 문자열을 출력할 수 있다.





  옵션 




- c (count) : 파일의 내용 대신 문자열이 들어있는 라인의 수를 출력

- n (line number) :  문자열이 들어있는 라인과 라인번호를 출력

- i (ignore) : 문자열의 대소문자를 구분하지 않는다.

- L (files with matches) : 문자열을 포함하는 파일의 이름만 출력

- r (recursive) : 서브 디렉토리의 파일까지 모두 출력

- v (invert match) : 문자열이 제외된, 문자열이 포함되어 있지 않은 라인을 출력

- e PATTERN : pattern에 찾을 문자열명시

- w (word regexp) : 전체 단어와 일치하는 줄만 출력, 단어의 일부 로써 일치하는 경우가 아닌 하나의 단어로써 일치하는 줄 출력




  패턴 정규 표현식


- grep '^a' 파일명 

   →  ^는 파일의 시작을 나타냄. 파일에서 a로 시작하는 행을 찾는다. 

- grep 'apple$' 파일명

   →  $는 파일의 끝을 나타냄. 파일에서 e로 끝나는 행을 찾는다. 

- grep 'app*' 파일명 

   →  파일에서 app로 시작하는 모든 단어를 찾는다. 

- grep 'a.....e' 파일명 

   →  파일에서 a로 시작하고 e로 끝나는 7자리 단어를 찾는다. 

- grep [a-d] 파일명 

   →  파일에서 a,b,c,d 로 시작하는 단어를 모두 찾는다. 

- grep [aA]pple 파일명 

   →  파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.

- grep 'apple' d*

   →  d로 시작하는 모든 파일에서 apple 를 포함하는 모든 행을 찾는다. 

- grep 'apple' 파일명1 파일명2 

   →  지정된 두개의 파일에서 apple 를 포함하는 모든 행을 찾는다. 

- grep '^[ab]' 파일명 

   →  = 파일에서 a나 b로 시작되는 모든 행을 찾는다. 



  egrep

  - egrep은 grep의 확장판으로 grep가 하나의 문자열을 찾는 것 과는 달리, 여러개의 문자열을 동시에 찾을 수 있고 , grep에서 활용할 수 있는     메타 문자 이외에 정규 표현식 메타문자가 추가되었다.




  egrep에서 사용하는 정규표현식 메타문자

    +  : + 앞의 정규표현식이 1회 이상 나타남 
    ? : ? 앞의 정규표현식이 0 또는 1회 나타남
    |  : 문자열간의 OR연산자
    () : 정규 표현식을 둘러 쌈


  ex


  ▶ egrep 'NW|EA' datafile : (NW나 EA가 포함된 행을 출력한다. NW와 EA사이에 파이프( | ))
  ▶ egrep '3+' datafile : (숫자 3이 한 번 이상 등장하는 행을 출력한다.)  
  ▶ egrep '2.?[0-9]' datafile : (숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
  ▶ egrep ' (no)+' datafile : (패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
  ▶ egrep 'S(h|u)' datafile : (문자 S 다음에 h나 u가 나오는 행을 출력한다.)
 ▶  egrep 'Sh|u' datafile  : (패턴 Sh나 u를 포함한 행을 출력한다.)