GN⁺: Ugrep – 더 강력하고, 빠르며, 사용자 친화적이고 호환성이 뛰어난 그렙
(ugrep.com)- 강력하고, 매우 빠르며, 사용자 친화적이고, grep과 호환되는 파일 패턴 검색 도구
- 새로운 파일 인덱서를 사용하여 파일 시스템 검색을 가속화하며, TUI(텍스트 기반 사용자 인터페이스) 또는 grep과 호환되는 옵션을 사용한 명령줄에서 검색할 수 있음
- 구글 검색과 비슷한 패턴 명령어 지원
- Fuzzy 검색 지원 (패턴에서 한글자 또는 두글자까지 틀린 단어들도 인식 하도록 확대 또는 최적 검색 결과 도출)
- MacOS, Windows, Alpine, Android Termux, Arch, CentOS, Debian, Fedora, FreeBSD, NetBSD, OpenSUSE, RHEL 등 다양한 시스템에 설치 가능함
- 중첩된 zip/tar/pax/cpio 아카이브, 압축된 파일, 바이너리 파일, PDF, doc, docx 등 다양한 파일 형식을 검색하고 헥스덤프할 수 있음
명령어
-
ug
와ugrep
명령어를 사용하여 파일에서 패턴을 검색할 수 있으며,ug
는 작업 디렉토리 또는 홈 디렉토리에 위치한 .ugrep 구성 파일을 사용함. -
ug --save-config OPTIONS
는 현재 .ugrep 구성을 사용하여 새 .ugrep 파일을 작업 디렉토리에 저장함. -
ugrep
은 .ugrep 구성 파일을 사용하지 않으며, 쉘 스크립트에서 가장 잘 작동함. - 다양한 예시를 통해 파일, 디렉토리 내에서 패턴 매칭, 구성 파일 저장, 구글 검색 등의 사용법을 제공함.
옵션
- ugrep은 GNU grep과 호환되며 GNU grep 명령줄 옵션을 지원함.
- 파일 목록, 매치 표시, 매치 정보, 매치 컨텍스트 등을 다루는 다양한 옵션을 제공함.
- 패턴 매칭 모드, 대화형 TUI, 파일 검색, 퍼지 검색 등의 기능을 포함함.
아카이브 및 압축 파일
-
-z
옵션을 사용하여 아카이브, 타르볼 및 압축된 파일을 검색할 수 있음. - 다양한 옵션을 통해 특정 수준의 아카이브 내부 검색, 바이너리 파일 무시, 파일 유형 및 글로브 패턴을 기반으로 한 검색을 지원함.
이진 파일 및 장치
- 이진 파일을 무시하거나 헥스덤프하는 옵션, 특수 장치를 검색하는 옵션을 포함함.
제외 및 포함
- 이진 파일 무시, 심볼릭 링크 따르기, 숨김 파일 포함, 특정 파일 유형 및 글로브 패턴 검색 등을 제어하는 옵션을 제공함.
형식화된 출력
- CSV, JSON, XML, 사용자 정의 형식 등 다양한 출력 형식을 지원함.
예쁜 것들, 더 많거나 적게
- 출력을 더 보기 좋게 만드는 옵션, 색상, 하이퍼링크, 페이저, 태그, 매치 교체 등을 포함함.
도움말 받기
-
--help
옵션을 통해 필요한 도움말을 얻을 수 있으며, 다양한 옵션과 패턴, 글로브, 필터에 대한 상세한 도움말을 제공함.
GN⁺의 의견
- ugrep은 기존의 grep 도구보다 훨씬 강력한 기능을 제공하며, 다양한 파일 형식과 패턴 매칭 옵션을 통해 사용자의 검색 경험을 향상시킴.
- 사용자 친화적인 TUI와 구성 파일을 통해 사용자 맞춤형 검색 환경을 구축할 수 있음.
- 이 도구는 소프트웨어 개발자나 시스템 관리자가 대규모 코드베이스나 파일 시스템을 효과적으로 탐색하고 분석하는 데 매우 유용함.
ripgrep 잘 쓰고 있어서 어떤 차이가 있나 검색해 보다 보니, 이런 글이 보이네요.
https://reddit.com/r/rust/…
몇년 전 이야기이긴 하지만, ugrep 에서는 ugrep이 ripgrep보다 빠르다고 하고, ripgrep 에서는 ripgrep이 ugrep보다 빠르다고 하니 어느쪽이 맞는 이야기냐? 라는 건데, 댓글이 정말 대단하네요.
ugrep에서 했다는 테스트들을 다시 진행하면서 결과를 요약했습니다.
결과는 대충 요약하면, 대부분의 경우에서 ripgrep이 더 빠른 게 맞는 것 같고, ugrep쪽은 뭔가 자기에게 유리한 방식으로 테스트를 진행한 것 같다는 내용입니다. (ugrep 에서 테스트한 내용으로 테스트를 해도 ripgrep쪽이 더 좋은 결과를 내는 경우가 많다는 것이고, ugrep쪽은 테스트 크기를 줄여 노이즈로 인한 편차를 키워 유리한 결과만 뽑은게 아닌가 라는 의심이 들어간 내용입니다.)
Hacker News 의견
-
성능과 ripgrep(ripgrep) 비교에 대한 스레드가 있음. ripgrep 기반의 텍스트 사용자 인터페이스(TUI) 몇 가지도 소개됨.
-
쉘 파이프라인에 대한 실시간 미리보기를 제공하고, 쉘에 통합되는 도구에 대한 희망을 표현함. zsh에서
accept-and-hold
zle 위젯을 사용하여 비슷한 기능을 구현했지만, 실시간 결과를 보는 것이 더 바람직함. -
n-gram 인덱서를 지원하는 것에 대한 관심 표현. ripgrep도 이 기능을 계획했지만 아직 구현하지 않음. 큰 코드베이스를 위해 csearch를 사용했지만, 여러 제한이 있음. 새로운 인덱서는 리눅스 커널 트리를 인덱싱하는 데 86초가 걸려 csearch의 cindex 도구보다 훨씬 느림.
-
호환성에 대한 중요한 주의사항: 실제로 호환되지 않으며, GNU 버전과 완전히 다른 기능을 하는 옵션을 몇 초 만에 찾음.
-
Sebastian Krahmer가 만든 grab도 살펴볼 것.
-
새로운 도구들이 XDG 표준을 따르지 않는 이유에 대한 의문 제기. XDG 표준을 따르면 홈 디렉토리가 수많은 설정 파일로 어지럽혀지는 것을 방지할 수 있음.
-
Debian 기반 리포지토리에서 사용할 수 있는 Ugrep에 대한 긍정적인 평가. 특히, 오타나 1-2글자 차이를 용인하는 퍼지 매치 기능이 유용함.
-
파일 내 여러 용어를 검색하는 기능(일명 "파일 구글링")에 대한 만족감 표현. 이전에 직접 스크립트를 작성했지만, 이 기능으로 인해 필요 없어짐. TUI도 살펴볼 예정. ripgrep을 사용해왔지만, 이 도구로 ripgrep을 대체할 수 있는지 비교해볼 것.