11 điểm bởi GN⁺ 2023-12-31 | 2 bình luận | Chia sẻ qua WhatsApp
  • Công cụ tìm kiếm mẫu trong tệp mạnh mẽ, cực nhanh, thân thiện với người dùng và tương thích với grep
  • Tăng tốc tìm kiếm hệ thống tệp bằng bộ lập chỉ mục tệp mới, có thể tìm kiếm qua TUI (giao diện người dùng dựa trên văn bản) hoặc từ dòng lệnh với các tùy chọn tương thích grep
  • Hỗ trợ cú pháp lệnh mẫu tương tự Google Search
  • Hỗ trợ tìm kiếm fuzzy (mở rộng để nhận diện cả các từ sai một hoặc hai ký tự trong mẫu, hoặc đưa ra kết quả tìm kiếm tối ưu)
  • Có thể cài đặt trên nhiều hệ thống như MacOS, Windows, Alpine, Android Termux, Arch, CentOS, Debian, Fedora, FreeBSD, NetBSD, OpenSUSE, RHEL, v.v.
  • Có thể tìm kiếm và tạo hexdump cho nhiều định dạng tệp như archive zip/tar/pax/cpio lồng nhau, tệp nén, tệp nhị phân, PDF, doc, docx, v.v.

Lệnh

  • Có thể dùng các lệnh ugugrep để tìm kiếm mẫu trong tệp, trong đó ug sử dụng tệp cấu hình .ugrep nằm ở thư mục làm việc hoặc thư mục home.
  • ug --save-config OPTIONS lưu một tệp .ugrep mới vào thư mục làm việc bằng cấu hình .ugrep hiện tại.
  • ugrep không sử dụng tệp cấu hình .ugrep và hoạt động tốt nhất trong shell script.
  • Cung cấp nhiều ví dụ khác nhau về cách dùng để so khớp mẫu trong tệp và thư mục, lưu tệp cấu hình, tìm kiếm Google, v.v.

Tùy chọn

  • ugrep tương thích với GNU grep và hỗ trợ các tùy chọn dòng lệnh của GNU grep.
  • Cung cấp nhiều tùy chọn khác nhau để xử lý danh sách tệp, hiển thị kết quả khớp, thông tin khớp, ngữ cảnh khớp, v.v.
  • Bao gồm các tính năng như chế độ so khớp mẫu, TUI tương tác, tìm kiếm tệp, tìm kiếm fuzzy, v.v.

Archive và tệp nén

  • Có thể tìm kiếm trong archive, tarball và tệp nén bằng tùy chọn -z.
  • Thông qua nhiều tùy chọn khác nhau, hỗ trợ tìm kiếm bên trong archive ở mức độ cụ thể, bỏ qua tệp nhị phân, và tìm kiếm dựa trên loại tệp cùng mẫu glob.

Tệp nhị phân và thiết bị

  • Bao gồm các tùy chọn để bỏ qua hoặc tạo hexdump cho tệp nhị phân, cũng như các tùy chọn để tìm kiếm trên thiết bị đặc biệt.

Loại trừ và bao gồm

  • Cung cấp các tùy chọn để kiểm soát việc bỏ qua tệp nhị phân, theo liên kết tượng trưng, bao gồm tệp ẩn, tìm kiếm theo loại tệp cụ thể và mẫu glob, v.v.

Đầu ra có định dạng

  • Hỗ trợ nhiều định dạng đầu ra như CSV, JSON, XML và định dạng tùy chỉnh.

Những thứ đẹp mắt, nhiều hơn hoặc ít hơn

  • Bao gồm các tùy chọn giúp đầu ra dễ nhìn hơn như màu sắc, hyperlink, pager, tag, thay thế kết quả khớp, v.v.

Nhận trợ giúp

  • Có thể nhận trợ giúp cần thiết qua tùy chọn --help, đồng thời cung cấp trợ giúp chi tiết về nhiều tùy chọn, mẫu, glob và bộ lọc khác nhau.

Ý kiến của GN⁺

  • ugrep cung cấp các tính năng mạnh hơn rất nhiều so với công cụ grep truyền thống, đồng thời cải thiện trải nghiệm tìm kiếm của người dùng thông qua nhiều định dạng tệp và tùy chọn so khớp mẫu đa dạng.
  • Với TUI thân thiện và tệp cấu hình, người dùng có thể xây dựng môi trường tìm kiếm được tùy biến theo nhu cầu.
  • Công cụ này đặc biệt hữu ích cho lập trình viên phần mềm hoặc quản trị viên hệ thống trong việc khám phá và phân tích hiệu quả các codebase lớn hoặc hệ thống tệp.

2 bình luận

 
molla 2024-01-02

Tôi đang dùng ripgrep khá ổn nên thử tìm xem khác biệt là gì thì thấy bài này.
https://reddit.com/r/rust/…
Dù là chuyện từ vài năm trước, nhưng phía ugrep nói ugrep nhanh hơn ripgrep, còn phía ripgrep lại nói ripgrep nhanh hơn ugrep, vậy rốt cuộc bên nào đúng? Phần bình luận thực sự rất ấn tượng.
Họ chạy lại các bài kiểm thử mà ugrep đã thực hiện và tóm tắt kết quả.
Tóm lại đại khái là, trong đa số trường hợp thì có vẻ đúng là ripgrep nhanh hơn, còn phía ugrep dường như đã tiến hành kiểm thử theo cách có lợi cho mình. (Tức là ngay cả khi kiểm thử lại theo nội dung mà ugrep đã dùng để test, nhiều trường hợp ripgrep vẫn cho kết quả tốt hơn; và cũng có nghi ngờ rằng phía ugrep đã giảm kích thước bài test để làm tăng độ lệch do nhiễu, từ đó chỉ rút ra những kết quả có lợi cho mình.)

 
GN⁺ 2023-12-31
Ý kiến trên Hacker News
  • Có một chủ đề thảo luận so sánh hiệu năng với ripgrep. Bài viết cũng giới thiệu một vài giao diện người dùng dạng văn bản (TUI) dựa trên ripgrep.

  • Bày tỏ mong muốn có một công cụ tích hợp với shell và cung cấp xem trước theo thời gian thực cho các pipeline shell. Đã từng hiện thực tính năng tương tự trong zsh bằng widget zle accept-and-hold, nhưng việc xem kết quả theo thời gian thực vẫn được cho là lý tưởng hơn.

  • Bày tỏ sự quan tâm tới việc hỗ trợ bộ lập chỉ mục n-gram. ripgrep cũng đã lên kế hoạch cho tính năng này nhưng vẫn chưa triển khai. Đã dùng csearch cho các codebase lớn, nhưng nó có nhiều hạn chế. Bộ lập chỉ mục mới mất 86 giây để lập chỉ mục cây Linux kernel, chậm hơn nhiều so với công cụ cindex của csearch.

  • Lưu ý quan trọng về tính tương thích: trên thực tế nó không tương thích, và chỉ trong vài giây đã tìm ra các tùy chọn hoạt động hoàn toàn khác với phiên bản GNU.

  • Cũng nên xem qua grab do Sebastian Krahmer tạo ra.

  • Đặt câu hỏi vì sao các công cụ mới không tuân theo tiêu chuẩn XDG. Tuân theo XDG có thể giúp tránh việc thư mục home bị bừa bộn với vô số tệp cấu hình.

  • Đánh giá tích cực về Ugrep có sẵn trong các kho phần mềm dựa trên Debian. Đặc biệt, tính năng khớp mờ cho phép chấp nhận lỗi gõ hoặc khác biệt 1-2 ký tự rất hữu ích.

  • Bày tỏ sự hài lòng với tính năng tìm nhiều thuật ngữ trong tệp (hay còn gọi là "google trong tệp"). Trước đây đã tự viết script, nhưng giờ không còn cần nữa nhờ tính năng này. Cũng dự định xem thử TUI. Đã dùng ripgrep từ trước, nhưng sẽ so sánh xem công cụ này có thể thay thế ripgrep hay không.