agrep พร้อมการลงโทษแบบอคติ


16

ฉันกำลังใช้tre-agrep (manpage) , การนำไปใช้agrep (manpage)เพื่อดำเนินการจับคู่รูปแบบโดยประมาณ ยูทิลิตี้นี้ค้นหาการจับคู่ตามระยะทางของ Levenshteinและผู้ใช้สามารถกำหนดค่าการลงโทษที่ใช้สำหรับการทดแทนการแทรกหรือการแก้ไขการลบ

อย่างไรก็ตามฉันต้องการใช้น้ำหนักที่แตกต่างกันไปตามความยาวของข้อความค้นหานั่นคือมีน้ำหนักที่ต่ำกว่าสำหรับการลบที่จุดเริ่มต้น (ซ้ายสุด) ของข้อความค้นหามากกว่าด้านขวา manหน้ายูทิลิตี้นี้ไม่ได้แสดงให้เห็นว่าระดับการควบคุมดังกล่าวเป็นไปได้

มีเครื่องมือบรรทัดคำสั่งอื่น ๆ ที่การจับคู่โดยประมาณกับการควบคุมที่ดีกว่าสำหรับบทลงโทษที่ไม่ตรงกันเป็นไปได้หรือไม่?


5
AFAIK, agrep เป็นเพียงหนึ่งเดียว ฉันประหลาดใจที่คุณรู้เรื่องนี้เพราะความสับสนในโลกของยูนิกซ์ (ซึ่งแย่มาก) ในทางทฤษฎีคุณสามารถปรับน้ำหนักเหล่านี้ได้ในซอร์สโค้ด แต่ไม่ว่าจะเป็นจริงหรือไม่ คุณเคยลองติดต่อผู้แต่งเครื่องมือหรือเอกสารต้นฉบับที่ใช้แล้วหรือยัง? ใจคุณก็จะอาจจะ farts เก่าตอนนี้ :)
Otheus

3
@Otheus Old farts ยังคงสามารถเขียนโค้ด ;-)
Kusalananda

การเขียนยูทิลิตีการจับคู่ Levenshtein นั้นไม่ใช่เรื่องยากที่จะมีการแทรก / ลบ / แทนที่ค่าใช้จ่ายที่กำหนดเป็นนิพจน์ใน Python หรือ Awk ส่วนที่น่าเบื่อก็คือตัวเลือกบรรทัดคำสั่งที่เป็นไปได้ทั้งหมด หาก OP ยินดีที่จะแสดงบรรทัดคำสั่งทั่วไปและบอกว่าต้องการตัวเลือกใดagrepจริง ๆ ฉันอาจจะทำอะไรบางอย่าง การคำนวณระยะทางของ Levenshtein ของสองสายนั้นง่ายมากจริงๆ ฉันขอแนะนำเปลือกสคริปต์ห่อรอบ GNU awk ภาวนา
สัตว์ที่กำหนด

คำตอบ:


1

ไม่การปรับแต่งแบบนั้นอยู่นอกขอบเขตของเครื่องมือ Linux และอยู่ในขอบเขตการเขียนโค้ดของคุณเอง การใช้ภาษาระดับสูงที่เป็นที่นิยม (Java, JavaScript, Python, Perl) จะใช้หน่วยความจำมากกว่า C เล็กน้อยและช้าลงสำหรับภาษาสคริปต์ แต่มีแนวโน้มว่าจะเล็กน้อยสำหรับกรณีการใช้งานของคุณ ดังนั้นให้ถาม stackoverflow อีกครั้งด้วยรายละเอียดที่แน่นอนที่คุณต้องการและบางคนอาจเสนอซับไลน์ให้คุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.