grep 용법 - 문자열 이 있 는 모든 파일 을 검색 합 니 다.

7656 단어
원문 ①:https://blog.csdn.net/tenfyguo/article/details/6387786 원문 ②:https://blog.csdn.net/BabyFish13/article/details/79709028
먼저 기억 해 야 할 것 은 정규 표현 식 은 마스크 와 다 르 고 의미 가 다르다 는 것 입 니 다!정규 표현 식 은 하나의 표현법 일 뿐 도구 가 이러한 표현법 을 지원 한다 면 이 도 구 는 정규 표현 식 의 문자열 을 처리 할 수 있다.vim, grep, awk, sed 는 모두 정규 표현 식 을 지원 합 니 다. 바로 정규 표현 식 을 지원 하기 때문에 강해 보 입 니 다.
(1) 기본 정규 표현 식
grep 도구 문법: grep -[arcinv] option: - a 텍스트 파일 로 - r 를 검색 하여 현재 디 렉 터 리 와 디 렉 터 리 에 있 는 하위 디 렉 터 리 에서 찾 습 니 다. - c 에서 찾 은 줄 에 맞 는 횟수 를 계산 합 니 다. - i 대소 문자 - n 을 무시 하고 줄 번호 - v 역방향 선택 을 출력 합 니 다. 즉, 검색 문자열 이 없 는 줄 - l 에서 파일 경로 만 출력 합 니 다.디 렉 터 리 가 상대 경로 라면 출력 도 파일 의 상대 경로 입 니 다.주: 검색 문자열 은 정규 표현 식 일 수 있 습 니 다!
1. 파일 에서 문자열 이 있 는 줄 을 검색 하고 줄 번 호 를 출력 합 니 다.
 #    the  ,     
grep -n 'the' regular_express.txt
 #     the  ,     
grep -nv 'the' regular_express.txt

2 [] 를 이용 하여 집합 문자 검색
1. [] 는 그 중의 특정한 문 자 를 나타 낸다. 예 를 들 어 [ade] 는 a 또는 d 또는 e 를 나타 낸다.
grep -n 't[ae]st' regular_express.txt
8:I can't finish the test. 
#                   
9:Oh! the soup taste good!

2. ^ 기호 로 [] 안의 접 두 사 를 만 들 고 [] 안의 문 자 를 제외 한 문 자 를 표시 할 수 있 습 니 다.예 를 들 어 검색 oo 전에 g 문자열 이 없 는 줄 입 니 다. '[^g]oo' 을 검색 문자열 로 사용 합 니 다.
grep -n '[^g]oo' regular_express.txt 
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!

3. [] 안에 범위 로 표시 할 수 있다. 예 를 들 어 [a-z] 는 소문 자 를 나타 내 고 [0-9] 는 0 ~ 9 의 숫자 를 나타 내 며 [A-Z] 는 대문자 들이다.[a-zA-Z0-9] 모든 숫자 와 영문 문 자 를 나타 낸다.물론 문 자 를 제외 하기 위해 ^ 에 맞 출 수도 있다.
#        
grep -n '[0-9]' regular_express.txt 
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.

3 줄 의 첫머리 와 줄 의 끝 문자 ^ $^ 줄 의 시작 을 나타 내 고 $ 줄 의 끝 (문자 가 아니 라 위치) 을 나타 내 면 ‘^$’ 줄 의 끝 과 줄 의 끝 만 있 기 때문이다.
  • 여기 ^[] 에서 사용 하 는 ^ 와 의미 가 다르다.
  • ^ 는 앞 에 있 는 꼬치 가 줄 의 끝 임 을 나타 낸다. 예 를 들 어 $ 은 한 줄 의 끝 에 있 는 검색 끝 에 '\.&'
  • 을 나타 낸다.
    #    the     
    grep -n '^the' regular_express.txt 
    12:the symbol '*' is represented as star.
    #           
    grep -n '^[a-z]' regular_express.txt 
    2:apple is my favorite food.
    4:this dress doesn't fit me.
    10:motorcycle is cheap than car.
    12:the symbol '*' is represented as star.
    18:google is the best tools for search keyword.
    19:goooooogle yes!
    20:go! go! Let's go.
    #            
    grep -n '^[^a-zA-Z]' regular_express.txt 
    1:"Open Source" is a good mechanism to develop programs.
    21:#I am VBird
    

    MS 시스템 에서 생 성 된 텍스트 파일 을 주의 하 십시오. 줄 을 바 꾸 면 ^ M 문자 가 추 가 됩 니 다. 따라서 마지막 문 자 는 숨겨 진 ^ M 입 니 다. Windows 아래 텍스트 를 처리 할 때 특히 주의 하 십시오. . 로 ^ M 기 호 를 삭제 할 수 있 습 니 다. cat dos_file | tr -d '/r' > unix_file
  • 그러면 ^M==/r 첫 줄 끝의 빈 줄 만 있 음 을 나타 낸다!
        grep -n '\.$' regular_express.txt
         #.           ,    \  
        1:"Open Source" is a good mechanism to develop programs.
        2:apple is my favorite food.
        3:Football game is not use feet only.
        4:this dress doesn't fit me.
        5:However ,this dress is about $ 3183 dollars.
        6:GNU is free air not free beer.
    
  • 4. 임의의 문자. 중복 문자 *
    bash 에서 '^$' 는 모든 문 자 를 대표 하 는 마스크 입 니 다. 그러나 정규 표현 식 에 서 는 의미 가 다 릅 니 다. ** 개 이상 의 문 자 를 표시 합 니 다. 예 를 들 어 0 는 첫 번 째 oo* 가 반드시 존재 하고 두 번 째 o 는 하나 이상 있 을 수도 있 고 없 을 수도 있 기 때문에 대표 o 입 니 다. 점 o임의의 문 자 를 대표 합 니 다. 존재 해 야 합 니 다.
    #    
    grep -n '^$' regular_express.txt 
    22:
    23:
     #     
    grep -vn '^$' regular_express.txt 
    1:"Open Source" is a good mechanism to develop programs.
    2:apple is my favorite food.
    3:Football game is not use feet only.
    4:this dress doesn't fit me.
    

    5 연속 중복 문자 의 범위 제한 {}. 0 개 이상 만 제한 할 수 있 으 며 문자 중복 수량 을 정확하게 제한 하려 면 g??d 을 사용 하 라. 'g..d' 은 숫자 용 . * 으로 분리 { } 개, 2 는 2 개, , 는 2 에서 더 많은 주 의 를 나타 낸다. 2,5 는 SHELL 에 특별한 의미 가 있 기 때문에 정규 표현 식 으로 사용 할 때 2~5 로 의 미 를 바 꿔 야 한다.
    grep -n 'g..d' regular_express.txt 
    1:"Open Source" is a good mechanism to develop programs.
    9:Oh! the soup taste good!
    16:The world is the same with 'glad'.
     #    o      
    grep -n 'ooo*' regular_express.txt                    
     #   o    ,   o   ,     。
    1:"Open Source" is a good mechanism to develop programs.
    2:apple is my favorite food.
    3:Football game is not use feet only.
    9:Oh! the soup taste good!
    18:google is the best tools for search keyword.
    19:goooooogle yes!
     #  g     ,       o    , gog, goog....gooog... 
    grep -n 'goo*g' regular_express.txt 
    18:google is the best tools for search keyword.
    19:goooooogle yes!
     #  g            
    grep -n 'g.*g' regular_express.txt
     #.*   0        
    1:"Open Source" is a good mechanism to develop programs.
    14:The gd software is a library for drafting programs.
    18:google is the best tools for search keyword.
    19:goooooogle yes!
    20:go! go! Let's go.
    

    셸 의 역방향 선택 은 [! range] 이 고, 정규 안 은 [^ range] 입 니 다.
    (2) 확장 정규 표현 식
    확장 정규 표현 식 은 기본 정규 표현 식 에 몇 가지 특수 한 구성 을 추가 합 니 다. 일부 작업 을 더욱 편리 하 게 합 니 다. 예 를 들 어 빈 줄 과 줄 의 첫 번 째 줄 을 제거 하려 면 다음 과 같이 사용 합 니 다.
    ```
     #      o      。
    grep -n 'o/{2/}' regular_express.txt 
    1:"Open Source" is a good mechanism to develop programs.
    2:apple is my favorite food.
    3:Football game is not use feet only.
    9:Oh! the soup taste good!
    18:google is the best tools for search keyword.
    19:goooooogle yes!
     #  g   2~5 o,      g      。
    grep -n 'go/{2,5/}g' regular_express.txt 
    18:google is the best tools for search keyword.
     #    g   2   o,    g  。。
    grep -n 'go/{2,/}g' regular_express.txt 
    18:google is the best tools for search keyword.
    19:goooooogle yes!
    ```
    

    그러나 확장 정규 표현 식 을 지원 하 는 egrep 과 확장 특수 기호 2, 를 사용 하면 훨씬 편리 합 니 다. grep 는 기본 표현 식 만 지원 하고 egrep 은 확장 을 지원 합 니 다. 사실 egrep 는 { } 의 별명 일 뿐 입 니 다. 따라서 \ 확장 정규 를 지원 합 니 다.
    grep -v '^$' regular_express.txt | grep -v '^#'
    "Open Source" is a good mechanism to develop programs.
    apple is my favorite food.
    Football game is not use feet only.
    this dress doesn't fit me.
    ............
    

    여기 | 는 표시 하거나 관계 합 니 다. 즉, 만족 grep -E 또는 grep -E 문자열 입 니 다.
    확장 특수 기호 몇 개 를 보 여 줍 니 다. | 는. * 와 유사 합 니 다. 하나 이상 의 중복 문 자 를 표시 합 니 다. ^$ 는. * 와 유사 합 니 다. 0 개 또는 한 문 자 를 표시 합 니 다. ^# 는 'gd | good | dog' 과 같은 gd, good 또는 dog 의 문자열 을 표시 합 니 다.일부 내용 을 하나의 유닛 그룹 으로 합성 합 니 다. 예 를 들 어 glad 나 good 를 검색 하려 면 'g (la | oo) d' () 의 장점 은 그룹 에 사용 할 수 있 습 니 다 ? 등 입 니 다. 예 를 들 어 A 와 C 의 시작 부분 을 검색 하려 면 중간 에 적어도 하나의 꼬치 가 있 습 니 다. 이렇게 할 수 있 습 니 다. ()Edited by JC! 2019 - 02 - 19 17: 30: 58 화요일
    마 왕 ISDevil 's Blog » grep 용법 - 어떤 문자열 이 들 어 있 는 모든 파일 검색
    좋아 하 다
    1)

    좋은 웹페이지 즐겨찾기