- เครื่องมือค้นหารูปแบบในไฟล์ที่ทรงพลัง เร็วมาก ใช้งานเป็นมิตร และเข้ากันได้กับ grep
- เร่งความเร็วการค้นหาในระบบไฟล์ด้วยตัวทำดัชนีไฟล์แบบใหม่ และสามารถค้นหาได้จาก TUI (ส่วนติดต่อผู้ใช้แบบข้อความ) หรือจากบรรทัดคำสั่งด้วยตัวเลือกที่เข้ากันได้กับ grep
- รองรับคำสั่งรูปแบบคล้ายกับการค้นหาของ Google
- รองรับการค้นหาแบบ 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 และทำงานได้ดีที่สุดในเชลล์สคริปต์
- มีตัวอย่างการใช้งานหลากหลายสำหรับการจับคู่รูปแบบในไฟล์และไดเรกทอรี การบันทึกไฟล์กำหนดค่า การค้นหาแบบ Google และอื่น ๆ
ตัวเลือก
- ugrep เข้ากันได้กับ GNU grep และรองรับตัวเลือกบรรทัดคำสั่งของ GNU grep
- มีตัวเลือกหลากหลายสำหรับจัดการรายการไฟล์ การแสดงผลการจับคู่ ข้อมูลของการจับคู่ บริบทของการจับคู่ และอื่น ๆ
- รวมความสามารถอย่างโหมดจับคู่รูปแบบ, TUI แบบโต้ตอบ, การค้นหาไฟล์, การค้นหาแบบฟัซซี และอื่น ๆ
อาร์ไคฟ์และไฟล์บีบอัด
- สามารถค้นหาในอาร์ไคฟ์ tarball และไฟล์บีบอัดได้ด้วยตัวเลือก
-z
- รองรับการค้นหาภายในอาร์ไคฟ์ตามระดับที่กำหนด การละเว้นไฟล์ไบนารี และการค้นหาตามชนิดไฟล์และรูปแบบ glob ผ่านตัวเลือกต่าง ๆ
ไฟล์ไบนารีและอุปกรณ์
- มีตัวเลือกสำหรับละเว้นไฟล์ไบนารีหรือทำเฮกซ์ดัมป์ รวมถึงตัวเลือกสำหรับค้นหาอุปกรณ์พิเศษ
การยกเว้นและการรวม
- มีตัวเลือกสำหรับควบคุมการละเว้นไฟล์ไบนารี การตาม symbolic link การรวมไฟล์ซ่อน และการค้นหาตามชนิดไฟล์หรือรูปแบบ glob ที่กำหนด
เอาต์พุตแบบจัดรูปแบบ
- รองรับรูปแบบเอาต์พุตหลากหลาย เช่น CSV, JSON, XML และรูปแบบกำหนดเอง
ของสวยงาม มากขึ้นหรือน้อยลง
- มีตัวเลือกที่ช่วยให้เอาต์พุตดูดีขึ้น เช่น สี ไฮเปอร์ลิงก์ เพจเจอร์ แท็ก การแทนที่ผลการจับคู่ และอื่น ๆ
การขอความช่วยเหลือ
- สามารถขอความช่วยเหลือที่ต้องการได้ผ่านตัวเลือก
--help พร้อมข้อมูลช่วยเหลืออย่างละเอียดเกี่ยวกับตัวเลือกต่าง ๆ รูปแบบ glob และตัวกรอง
ความเห็นของ GN⁺
- ugrep มีความสามารถที่ทรงพลังกว่าเครื่องมือ grep แบบเดิมอย่างมาก และช่วยยกระดับประสบการณ์การค้นหาด้วยการรองรับรูปแบบไฟล์และตัวเลือกการจับคู่รูปแบบที่หลากหลาย
- ผู้ใช้สามารถสร้างสภาพแวดล้อมการค้นหาที่ปรับแต่งได้ผ่าน TUI ที่ใช้งานเป็นมิตรและไฟล์กำหนดค่า
- เครื่องมือนี้มีประโยชน์อย่างมากสำหรับนักพัฒนาซอฟต์แวร์หรือผู้ดูแลระบบที่ต้องสำรวจและวิเคราะห์โค้ดเบสหรือระบบไฟล์ขนาดใหญ่ได้อย่างมีประสิทธิภาพ
2 ความคิดเห็น
ผมใช้ ripgrep อยู่เป็นประจำ เลยลองค้นหาว่ามันต่างกันอย่างไร แล้วก็ไปเจอโพสต์นี้เข้า
https://reddit.com/r/rust/…
แม้จะเป็นเรื่องเมื่อหลายปีก่อน แต่ฝั่ง ugrep บอกว่า ugrep เร็วกว่า ripgrep ส่วนฝั่ง ripgrep ก็บอกว่า ripgrep เร็วกว่า ugrep เลยกลายเป็นคำถามว่า สรุปแล้วฝั่งไหนพูดถูก? ซึ่งคอมเมนต์นั้นยอดเยี่ยมมากจริง ๆ
เขาไล่รันทดสอบที่บอกว่าทำใน ugrep ใหม่อีกครั้ง แล้วสรุปผลลัพธ์ไว้
สรุปแบบคร่าว ๆ คือ ในกรณีส่วนใหญ่ดูเหมือนว่า ripgrep จะเร็วกว่าจริง และฝั่ง ugrep เหมือนจะจัดการทดสอบในแบบที่เข้าทางตัวเองมากกว่า (คือแม้จะทดสอบตามเงื่อนไขที่ ugrep ใช้ ฝั่ง ripgrep ก็มักได้ผลลัพธ์ดีกว่าอยู่ดี และยังมีข้อสงสัยว่าฝั่ง ugrep อาจลดขนาดการทดสอบลงเพื่อเพิ่มความคลาดเคลื่อนจาก noise แล้วเลือกหยิบเฉพาะผลที่ออกมาเข้าทางตัวเอง)
ความคิดเห็นจาก Hacker News
มีเธรดเปรียบเทียบประสิทธิภาพกับ ripgrep(ripgrep) และยังมีการแนะนำ text user interface (TUI) ที่อิงกับ ripgrep อยู่หลายตัว
มีการแสดงความต้องการเครื่องมือที่ผสานเข้ากับเชลล์และให้การแสดงตัวอย่างแบบเรียลไทม์สำหรับ shell pipeline โดยใน zsh เคยทำฟังก์ชันคล้ายกันด้วยวิดเจ็ต zle
accept-and-holdแต่การได้เห็นผลลัพธ์แบบเรียลไทม์จะดีกว่ามีความสนใจในฟีเจอร์รองรับ n-gram indexer โดย ripgrep ก็เคยวางแผนจะมีฟีเจอร์นี้แต่ยังไม่ได้ทำ ใช้ csearch กับโค้ดเบสขนาดใหญ่มาก่อนแต่มีข้อจำกัดหลายอย่าง ส่วน indexer ใหม่นี้ใช้เวลา 86 วินาทีในการทำดัชนีต้นไม้ซอร์สของลินุกซ์เคอร์เนล ซึ่งช้ากว่าเครื่องมือ cindex ของ csearch มาก
มีข้อควรระวังสำคัญเรื่องความเข้ากันได้: จริง ๆ แล้วมันไม่ได้เข้ากันได้ และสามารถเจอตัวเลือกที่ทำงานต่างจากเวอร์ชัน GNU อย่างสิ้นเชิงได้ภายในไม่กี่วินาที
ควรลองดู grab ของ Sebastian Krahmer ด้วย
มีคำถามว่าทำไมเครื่องมือใหม่ ๆ ถึงไม่ทำตามมาตรฐาน XDG ซึ่งถ้าทำตามก็จะช่วยไม่ให้โฮมไดเรกทอรีรกไปด้วยไฟล์ตั้งค่าจำนวนมาก
ให้ความเห็นเชิงบวกต่อ Ugrep ที่ใช้งานได้จากรีโพซิทอรีสาย Debian โดยเฉพาะฟีเจอร์ fuzzy match ที่ยอมรับคำพิมพ์ผิดหรือความต่าง 1-2 ตัวอักษรได้ซึ่งมีประโยชน์มาก
พอใจกับความสามารถในการค้นหาหลายคำภายในไฟล์เดียวกัน (ที่เรียกว่า "การกูเกิลในไฟล์") ก่อนหน้านี้เคยเขียนสคริปต์เองแต่ฟีเจอร์นี้ทำให้ไม่จำเป็นแล้ว และมีแผนจะลองดู TUI ด้วย เดิมใช้ ripgrep มาตลอด แต่จะลองเปรียบเทียบว่าเครื่องมือนี้แทน ripgrep ได้หรือไม่