rg - 현재 가장 빠 른 텍스트 검색 신기

9179 단어
머리말
이전에 텍스트 검색 도 구 를 간단하게 사용 한 적 이 있 습 니 다. ag - the Silver Searcher 는 나중에 ag 가 Windows 에서 검색 한 결과 중국어 로 어 지 러 운 코드 를 표시 하 는 것 을 발 견 했 습 니 다. 공식 적 으로 는 아직 해결 되 지 않 았 습 니 다.
그리고 최근 몇 년 동안 더욱 우수한 텍스트 검색 신기 가 나 타 났 습 니 다. ripgrep, 조금 만 시도 해 보 았 습 니 다. 속도 가 빠 르 고 플랫폼 을 뛰 어 넘 으 며 중국 어 를 지원 하여 본인 의 수요 에 부합 합 니 다.
다음은 rg 와 그 가 가장 자주 사용 하 는 옵션 을 간단하게 소개 합 니 다.
간단 한 소개
정규 일치 재 귀적 검색 디 렉 터 리
주어진 정규 표현 식 에 따라 rg 는 행위 단 위 를 대상 으로 재 귀적 으로 검색 합 니 다.기본적으로 rg 는 .gitignore 설정 을 존중 하고 숨겨 진 파일 / 디 렉 터 리 와 바 이 너 리 파일 을 자동 으로 무시 합 니 다.
rg 는 다음 과 같은 몇 가지 특성 을 가지 고 있다.
  • 자동 재 귀 검색 디 렉 터 리 (grep -R)
  • 자동 하 이 라이트 매 칭 결과
  • 기본 값 은 .gitignore 이 지정 한 파일 을 자동 으로 무시 하고 파일 과 바 이 너 리 파일 을 숨 깁 니 다
  • 지정 한 파일 형식
  • 을 검색 할 수 있 습 니 다.
  • 지원 grep 대부분의 상용 특성
  • 각종 파일 컴 파일 지원 (UTF - 8, UTF - 16, latin - 1, GBK, EUC - JP, Shift JIS 등)
  • 일반적인 압축 파일 검색 지원 (gzip, xz, lzma, bzip 2, lz4)
  • 다 중 검색 과 화려 한 정규
  • 을 지원 하지 않 습 니 다.
    사용법
  • 형식:
  • USAGE:
    
        rg [OPTIONS] PATTERN [PATH ...]
        rg [OPTIONS] [-e PATTERN ...] [-f PATTERNFILE ...] [PATH ...]
        rg [OPTIONS] --files [PATH ...]
        rg [OPTIONS] --type-list
        command | rg [OPTIONS] PATTERN
    

    예 를 들 어:
    rg RxJava  //            RxJava    
    rg install ReadMe.md //   ReadMe.md        install
    

    상용 옵션 안내
  • 출력 옵션
  • -g, --glob Include or exclude files and directories for searching that match the given glob. This always overrides any other ignore logic. Multiple glob flags may be used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude it. 일부 유형의 파일 이나 디 렉 터 리 를 추가 하거나 제거 하 는 것 과 일치 합 니 다.glob! 을 더 해 검색 을 배제 하 겠 다 고 밝 혔 다.
    eg: 현재 디 렉 터 리 에서 require('uglifyjs-webpack-plugin') 검색:
    rg -F "require('uglifyjs-webpack-plugin')" -g "*.md"  //     `.md`  
    rg -F "require('uglifyjs-webpack-plugin')" -g "!*.md" //    `.md`  
    
    --iglob : -g, --glob 과 같 지만 대소 문 자 는 무시 합 니 다.-l, --files-with-matches Only print the paths with at least one match. 일치 하 는 내용 의 파일 이름 만 인쇄 합 니 다.-v, --invert-match Invert matching. Show lines that do not match the given patterns. 역방향 일치.-C/--context [Lines] Show the lines surrounding a match. 출력 일치 내용 전후 [LINES] 줄 내용
    eg: require('uglifyjs-webpack-plugin') 을 검색 하여 이 줄 의 앞 뒤 각 2 줄 의 내용 을 출력 합 니 다.
    rg -C 2 "require\('uglifyjs-webpack-plugin'\)" //       
    
    -F, --fixed-strings Treat the pattern as a literal string instead of a regular expression. When this flag is used, special regular expression meta characters such as .(){}*+ do not need to be escaped. 정규 표현 식 이 아 닌 문자열 로 일치 하 는 문 자 를 사용 합 니 다.즉, 일치 문자 .(){}*+ 은 전의 할 필요 가 없다.
    eg: require('uglifyjs-webpack-plugin') 을 검색 하여 이 줄 의 앞 뒤 각 2 줄 의 내용 을 출력 합 니 다.
    rg -C 2 -F "require('uglifyjs-webpack-plugin')" ./   //       
    
    --max-depth Limit the depth of directory traversal to NUM levels beyond the paths given. A value of zero only searches the explicitly given paths themselves.
    For example, 'rg -- max - depth 0 dir /' is a no - op because dir / will not be descended into. 'rg -- max - depth 1 dir /' will search only the direct children of 'dir'. 폴 더 재 귀적 검색 깊이 를 제한 합 니 다.rg --max-depth 0 dir/ 은 어떠한 검색 도 수행 하지 않 습 니 다.rg --max-depth 1 dir/ 마 리 는 dir/ 현재 디 렉 터 리 에서 검색 합 니 다.-M/--max-columns Limit the length of lines printed by ripgrep. 출력 최대 줄 수 를 제한 합 니 다.--files Print the files that ripgrep would search, but don 't actually search them. 인쇄 할 때 찾 을 파일 입 니 다. 이 옵션 은 실제 조회 작업 을 수행 하지 않 습 니 다.형식: rg [OPTIONS] --files [PATH ...], 여기에 pattern 을 추가 할 수 없습니다.
    eg: 현재 파일 을 인쇄 하면 찾 을 파일:
    rg --files . //                  
    

    주: 이 옵션 은 사실 find . -type f 에 해당 합 니 다. 현재 디 렉 터 리 의 모든 파일 을 찾 습 니 다.-c/--count 일치 하 는 총 라인 수 를 보고 합 니 다. 일치 하 는 파일 수 를 계산 합 니 다.--debug Shows ripgrep 's debug output. This is useful for understanding why a particular file might be ignored from search, or what kinds of configuration ripgrep is loading from the environment. 디 버 깅 정 보 를 표시 합 니 다.구체 적 인 파일 이 무시 되 는 원인 이나 rg 가 환경 변수 에서 어떤 설정 을 불 러 왔 는 지 알 아 보 는 데 유리 합 니 다.
  • 입력 옵션
  • -e, --regexp A pattern to search for. This option can be provided multiple times, where all patterns given are searched. Lines matching at least one of the provided patterns are printed. This flag can also be used when searching for patterns that start with a dash.
    For example, to search for the literal '-foo', you can use this flag: rg -e -foo
    You can also use the special '--' delimiter to indication that no more flags will be provided. Namely, the following is equivalent to the above: rg -- -foo 정규 검색 을 사용 합 니 다.
    주: rg 자체 가 정규 표현 식 을 지원 합 니 다. -e 은 접두사 테이프 - 과 일치 하 는 문자열 이나 여러 문자열 과 일치 하려 면 (이 옵션 을 여러 번 사용 하면 됩 니 다).
    eg: 검색 내용 은 startXXXend 문자열 을 포함 합 니 다:
    rg -e "start.*end" .  //   ,`startXXXend`,`XXXstartendXXX`,`XXXstartXXXend`,`XXXstartXXXendXXX`    
    rg "start.*end" .     //        
    
    -i/--ignore-case 패턴 을 검색 할 때 케이스 차 이 를 무시 합 니 다. rg -i fastfast, fASt, FAST, -S/--smart-case 등 대소 문 자 를 무시 합 니 다.
    This is similar to --ignore-case, but disables itself if the pattern contains any uppercase letters. 보통 this flag is put into alias or a config file. 스마트 대소 문 자 를 열 면 보통 --ignore-case 에 해당 하지만 대문자 입력 시 대소 문자 무시 기능 을 취소 합 니 다.-w/--word-regexp Require that all matches of the pattern be surrounded by word boundaries. That is, given pattern, the --word-regexp flag will cause ripgrep to behave as if pattern were actually \b(?:pattern)\b. 단어 경 계 를 열 고 단어 만 맞 춥 니 다.-a/--text binary files as if they were plain text. 바 이 너 리 파일 을 검색 하 십시오 (바 이 너 리 파일 을 텍스트 파일 로 보 여 줍 니 다)--hidden Search hidden files and directories. By default, hidden files and directories are skipped. hidden file or a directory is whitelisted in an ignore file, then it will be searched even if this flag isn 't provided. 숨겨 진 파일 을 검색 합 니 다.기본적으로 숨겨 진 파일 을 검색 하지 않 습 니 다. 숨겨 진 파일 이 설정 화이트 리스트 에 있 으 면 검색 합 니 다. 이 옵션 을 표시 하지 않 아 도 됩 니 다.-r, --replace Replace every match with the text given when printing results. Neither this flag nor any other ripgrep flag will modify your files.
    Capture group indices (e.g., $5) and names (e.g., $foo) are supported in the replacement string.
    Note that the replacement by default replaces each match, and NOT the entire line. To replace the entire line, you should match the entire line.
    This flag can be used with the - o / -- only - matching flag. 문자 교체.일치 하 는 문 자 를 사용자 정의 문자 로 바 꿉 니 다. 이 옵션 은 원본 파일 을 바 꾸 지 않 고 출력 만 바 꿉 니 다.
    eg: 파일 형식 이 .py 인 파일 을 찾 고 경로 의 \/ 으로 변경 합 니 다.
    rg --files . | rg -F ".py"| rg -F \ -r /
    

    기타
  • 자동 필터: 앞에서 말 했 듯 이 rg 는 재 귀적 검색 을 할 때 .gitignore 일치 규칙 을 자동 으로 걸 러 내 고 숨겨 진 파일 과 디 렉 터 리 를 무시 하 며 바 이 너 리 파일 과 링크 를 무시 합 니 다.그러나 이 모든 필 터 는 각자 지정 한 표 시 를 통 해 제거 할 수 있 습 니 다. 1) --no-ignore/-u: .gitignore 의 일치 규칙 에 응답 하지 않 음 2) --hidden/-uu: 숨겨 진 파일 과 디 렉 터 리 검색 3) -a/--text/-uuu: 바 이 너 리 파일 검색 4) -L/--folow: 링크 파일 추적
  • 수 동 필터: globs (-g, --glob): 수 동 필 터 는 .gitignore · 과 같은 모드 로 분 석 됩 니 다. 즉, 뒤에 있 는 glob 는 앞의 glob 를 교체 합 니 다.예 를 들 어 rg clap -g "*.toml" -g "!*.toml"rg clap -g "!*.toml", 즉 .toml 파일 을 검색 하지 않 는 것 과 같다.
  • 수 동 필터: 파일 형식 (-g, --glob): 상기 globs 모드 를 사용 하면 파일 형식의 필 터 를 실현 할 수 있 지만 매번 -g "*.xxx" 을 쓰 는 것 은 너무 번 거 롭 습 니 다. 이 를 위해 rg 는 파일 형식 을 직접 지원 하 는 다른 옵션 을 내 장 했 습 니 다: -t/--type.예 를 들 면
  • rg "fn run" --type rust //     :rust
    rg "fn run" --trust     //     :rust,   
    rg "int main" -tc       //     :C,  `.c` `.h`  ,   :rg "int main" -g "*.{c,h}"
    
    rg clap --type-not rust //    rust   
    rg clap -Trust          //    rust   ,   
    

    주: 즉 -t 은 파일 형식 을 포함 하고 -T 은 파일 형식 을 제외 합 니 다.파일 형식 은 rg --type-list 을 통 해 볼 수 있 습 니 다.
    레 퍼 런 스
  • User Guide
  • 가장 빠 른 텍스트 검색 신기 ripgrep - grep 의 가장 좋 은 대체 자
  • 좋은 웹페이지 즐겨찾기