Linux grep, egrep 및 해당 정규 표현 식 용법 상세 설명

Liux 는 텍스트 처리 과정 에서 텍스트 검색 도 구 를 정규 표현 식 이 라 고 합 니 다.텍스트 검색 도 구 는 grep, egrep, fgrep 가 있 습 니 다. egrep 는 정규 표현 식 의 확장 정규 표현 식 입 니 다. fgrep 는 텍스트 문자열 을 검색 하 는 데 사 용 됩 니 다. grep 와 egrep 명령 은 일치 하 는 표현 식 을 검색 하 는 것 이 아니 라 문자열 을 검색 하기 때 문 입 니 다.grep 의 의 미 는 global search Regular expression and Print out the line 입 니 다.
      정규 표현 식 (REGular EXPression REGEXP) 은 문자 자체 의 의 미 를 나타 내지 않 고 사용자 가 지정 한 텍스트 모드 (정규 표현 문자 및 정상 문자 조합) 에 따라 대상 파일 을 한 줄 씩 검색 하여 일치 하 는 줄 을 표시 합 니 다.
   먼저 정규 표현 식 grep 명령 의 용법 과 자주 사용 하 는 옵션 의 응용 및 간단 한 예 시 를 설명 합 니 다.           
  grep [OPTIONS] PATTERN [FILE...]  
     --color=auto  자동 표시 }
                        언제나 가끔 } 일치 하 는 내용 을 빨간색 으로 자동 으로 표시 할 지 여부
                            never   표시 되 지 않 음     }
           -o: 일치 하 는 내용 만 표시
           -i: ignore case, 모든 문자 대소 문자 구분 없 음
          -v: 패턴 에 일치 하지 않 는 줄 보이 기
           -E: 확 장 된 정규 표현 식 사용 하기
           -A \ #: 패턴 에 맞 는 줄 과 뒤에 \ # 줄
           -B \ #: 패턴 에 맞 는 줄 과 앞 \ # 줄 
           -C \ #: 패턴 에 맞 는 줄 과 앞 뒤 \ # 줄
예제 1: 일치 하 는 문자 빨간색 보이 기
[root@localhost ~]# grep --color=auto "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

2:
[root@localhost ~]# grep -o --color=auto "root" /etc/passwd
root
root
root
root

 

  :
     . :
     []:  
          : [root@localhost ~]# grep "[Cc]a" /etc/rc.d/rc.sysinit      
          Ca ca,a ,C/c , Ca ca 。
   
    [^] :
    [0-9]、[[:digit:]] 0-9
    [^0-9]、[^[:digit:]] 0-9
    [a-z]、[[:lower:]] a-z
    [A-Z]、[[:upper:]] A-Z
    [[:space:]]
    [[:punct:]]
    [0-9a-zA-Z]、[[:alnum:]]
    [a-zA-Z]、[[:alpha:]]  
 
  : , 。
    * :  
:"ab*c"   ab……bc b                                      abbc ,ac                                                        abb,                        .* :  ( , )
         
   [root@localhost ~]# grep "r.*t" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

   \? :0 1 ,                                                        " ab \?c "                                                                     abc ,ac                                                         abbc  

    \+ : 1 , 1 ;
          " ab \+c "                                                                         ac ,                                                                       abc,abbbbc
                                       \{m\} :m , m ;                                \{m,n\}: m , n ;                                                           "ab\{2\}c" 2 -> abbc                      
          \{0,n\} : n  "ab\{0,3\}c" 0~3 -> ab、 abbc 、abbbc                                   \{m,\} : m      
          "ab\{1,\}c" -> ab、 abbc 、abbbc 、 ab…bc


              위치 고정:
                          ^ :닻 줄 머리, ^ PATTERN                    
                          $:닻 줄 끝, PATTERN $
                          ^PATTERN $: 줄 전체 내용 을 패턴 으로 일치 시 킵 니 다.
                          ^$ :공백 줄 일치 하기;
           예: 줄 전체 내용 과 일치 하 는 데 사용
         [root@localhost ~]# grep "^sh.*sh$" /etc/passwd
         sharang:x:5002:5002::home/sharang:/bin/tcsh
              
      단어 닻: 특수 문자 가 아 닌 연속 문자열                                                 
                                
          닻  \< PATTERN 또는 \ b                                                                                                                                                                                   [root@localhost tmp]# grep "\                          shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
                      닻 어미: PATTERN \ \ > 또는 PATTERN \ b
                            \: PATTERN 과 일치 하면 단어 전체 에 일치 합 니 다.                                 
           예: 두 자리 숫자 일치
          [root@localhost ~]# ifconfig | grep "\<[0-9]\{2\}\>"
           eth0      Link encap:Ethernet  HWaddr 00:0C:29:5A:B6:F5  
                     inet addr:192.168.191.16  Bcast:192.168.191.255  Mask:255.255.255.0
                     inet6 addr: fe80::20c:29ff:fe5a:b6f5/64 Scope:Link
           
                   그룹: \ (\)
                            메모: 그룹 에 있 는 모드 입 니 다. 특정한 일치 과정 에서 일치 하 는 문 자 는 grep 기억 (내 장 된 변수 에 저 장 됩 니 다.                이 변 수 는 \ 1, \ 2,...) 이 므 로 인용 할 수 있 습 니 다.       
                               \1: 참조, 패턴 은 왼쪽 에서 오른쪽으로, 첫 번 째 왼쪽 괄호 와 이에 대응 하 는 오른쪽 괄호 의 패턴 에 일치 하 는 내용 입 니 다.
                               \2: 참조, 모드 에서 왼쪽 에서 오른쪽, 두 번 째 왼쪽 괄호 와 이에 대응 하 는 오른쪽 괄호 중의 모드 에서 일치 하 는 내용;
                                           \(ab\(cd\)\) \1 \2    \1 ab 에 일치 \2 cd 에 일치                   
             (1) He like his lover. 
             (2) He like his liker. 
             (3) She love her lover. 
             (4) She love her liker.

              "\(l..e\).*\1"  위 내용 과 일치 할 수 있 습 니 다.
다음은 확 장 된 정규 표현 식 egrep 이자 일치 하 는 표현 식 을 검색 하 는 모드 입 니 다. grep 의 차이 점 은 전의 자 를 추가 하지 않 아 도 됩 니 다 \ \, 문자 일치, 횟수 일치, 위치 고정, 그룹 을 나 누 는 용법 이 같 습 니 다.
     문자 일치:.: 단일 문자 일치 
                []: 임의의 단일 문자 일치
               [^]: 범위 밖의 임의의 단일 문자 와 일치 합 니 다.
     횟수 일치:
                *:임 의 회        
             ?:0 회 혹은 1 회
             + :최소 1 회
            {m}: m 회 정확하게 일치 
          {m, n}: 최소 m 회, 최대 n 회
          {m,}: 최소 m 회
         {0, n}: 최대 n 회
     위치 고정:
              ^: 닻 을 내리다.
             $ : 닻 꼬리
         \<、\닻
          \>、\:닻 어미
         그룹:   
           ():  인용: \ 1, \ 2...
        또는:
              a | b: a 또는 b 또는 양쪽 의 모든 내용;
              예: meminfo 에서 S 또는 s 로 시작 하 는 줄 과 일치 합 니 다.
              # egrep "^(S|s)" /proc/meminfo
마지막 fgrep 명령 은 주어진 문자열 이나 어구 와 일치 하 는 줄 을 하나 이상 찾 는 데 사 용 됩 니 다. fgrep 검색 속 도 는 grep 명령 보다 빠 르 지만 유연 하지 않 습 니 다. 규칙 표현 식 이 아 닌 고정된 텍스트 만 찾 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기