agrep với hình phạt thiên vị


16

Tôi đang sử dụng tre-agrep (manpage) , một triển khai agrep (manpage) , để thực hiện khớp mẫu gần đúng. Tiện ích này tìm kiếm các kết quả khớp dựa trên khoảng cách Levenshtein và người dùng có thể định cấu hình hình phạt được áp dụng để thay thế, chèn hoặc xóa các chỉnh sửa.

Tuy nhiên, tôi muốn áp dụng các trọng số khác nhau theo chiều dài của truy vấn, cụ thể là với trọng số thấp hơn để xóa ở đầu (đầu bên trái) của truy vấn so với bên phải. Các mantrang cho tiện ích này không có nghĩa là một mức độ như vậy kiểm soát là có thể.

Có các công cụ dòng lệnh khác trong đó có thể kết hợp gần đúng với kiểm soát tốt hơn đối với các hình phạt không khớp?


5
AFAIK, agrep là người duy nhất. Tôi ngạc nhiên khi bạn biết về nó, vì sự tối nghĩa tương đối của nó trong thế giới UNIX (quá tệ). Về lý thuyết, bạn có thể điều chỉnh các trọng số này trong mã nguồn, nhưng liệu điều đó có thực tế hay không, tôi không biết. Bạn đã thử liên hệ với các tác giả của các công cụ hoặc thậm chí các giấy tờ gốc mà họ dựa trên? Nhắc bạn, có lẽ bây giờ chúng là những cái rắm cũ :)
Otheus

3
@Otheus Những cái rắm cũ vẫn có thể viết mã ;-)
Kusalananda

Sẽ không khó để viết một tiện ích phù hợp với Levenshtein với chi phí chèn / xóa / thay thế được xác định là biểu thức trong Python hoặc Awk. Phần tẻ nhạt, thực sự, là tất cả các tùy chọn dòng lệnh có thể. Nếu OP sẵn sàng hiển thị một dòng lệnh điển hình và cho biết những tùy chọn agrepnào họ thực sự cần, tôi có thể có thể đánh cắp thứ gì đó. Tính toán khoảng cách Levenshtein của hai chuỗi rất dễ dàng, thực sự. Tôi muốn đề xuất một tập lệnh shell bao quanh lệnh gọi GNU awk.
Động vật danh nghĩa

Câu trả lời:


1

Không. Loại tùy chỉnh đó nằm ngoài phạm vi của một công cụ Linux và trong phạm vi viết mã của riêng bạn. Sử dụng ngôn ngữ cấp cao phổ biến (Java, JavaScript, Python, Perl) sẽ sử dụng bộ nhớ nhiều hơn một chút so với C và chậm hơn một chút đối với các ngôn ngữ theo kịch bản nhưng có thể sẽ không đáng kể cho trường hợp sử dụng của bạn. Vì vậy, hãy hỏi lại về stackoverflow với các chi tiết chính xác bạn cần và ai đó có thể cung cấp cho bạn một lớp lót.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.