ฉันมีไฟล์ขนาดใหญ่ที่มีหนึ่งสตริงในแต่ละบรรทัด ฉันต้องการทราบว่าสตริงอยู่ในไฟล์อย่างรวดเร็วหรือไม่ เป็นการดีที่จะทำได้โดยใช้อัลกอริทึมชนิดสับแบบไบนารี
Googling บางคนเปิดเผยlook
คำสั่งด้วยการ-b
ตั้งค่าสถานะซึ่งสัญญาว่าจะค้นหาและส่งออกสตริงทั้งหมดที่เริ่มต้นด้วยคำนำหน้าที่กำหนดโดยใช้อัลกอริทึมการค้นหาแบบไบนารี โชคไม่ดีที่ดูเหมือนว่าจะทำงานไม่ถูกต้องและส่งคืนผลลัพธ์ที่เป็นโมฆะสำหรับสตริงที่ฉันรู้ว่าอยู่ในไฟล์ (พวกเขาถูกส่งคืนอย่างถูกต้องจากการgrep
ค้นหาที่เทียบเท่า)
ไม่มีใครรู้จักยูทิลิตี้หรือกลยุทธ์อื่นในการค้นหาไฟล์นี้อย่างมีประสิทธิภาพ
look -b
File too large
ล้มเหลวสำหรับฉันกับข้อผิดพลาด ฉันคิดว่ามันกำลังพยายามอ่านเรื่องราวทั้งหมดในความทรงจำ
look
คำสั่งให้ทำงานอย่างถูกต้องเพราะดูเหมือนว่าจะไม่สนใจสถานที่และใช้ C เช่นการเรียงลำดับ hardcoded ฉันยังเปิดบั๊ก เนื่องจากพฤติกรรมที่สับสนนี้: bugzilla.kernel.org/show_bug.cgi?id=198011