узгоджуються зі спрямованими упередженими штрафами


16

Я використовую tre-agrep (manpage) , реалізацію agrep (manpage) , щоб виконати приблизне узгодження шаблону. Ця утиліта шукає відповідність на основі відстані Левенштейна , і користувач може налаштувати штраф, застосований за зміни, заміни, вставки чи видалення.

Хочеться, однак, застосовувати зважування різною по всій довжині запиту, а саме з меншою вагою для видалення на початку (лівий кінець) запиту, ніж праворуч. На manсторінці цієї утиліти не вказано, що такий рівень контролю можливий.

Чи існують інші інструменти командного рядка, де можливе приблизне узгодження з точнішим контролем за штрафними санкціями?


5
AFAIK, agrep - єдиний. Я здивований, що ви навіть про це знаєте, враховуючи його відносну неясність у світі UNIX (що дуже погано). Теоретично ви можете відрегулювати ці ваги у вихідному коді, але чи це практично, я не знаю. Ви намагалися зв’язатися з авторами інструментів або навіть оригінальними документами, на яких вони засновані?
Майте на

3
@Otheus Старі пукали ще вміють писати код ;-)
Kusalananda

Не важко буде написати утиліту, що відповідає Levenshtein, із витратами на вставлення / видалення / заміну, визначені як вирази в Python або Awk. Напружна частина, насправді, - це всі можливі варіанти командного рядка. Якщо ОП готовий показати типовий командний рядок і сказати, які варіанти agrepїм насправді потрібні, я, певно, міг би щось вибити. Обчислити відстань Левенштейна в двох струнах дуже просто. Я б запропонував сценарій оболонки, обгорнутий навколо виклику GNU awk.
Номінальна тварина

Відповіді:


1

Ні. Таке налаштування виходить за рамки інструмента Linux та входить у сферу написання власного коду. Використання популярної мови високого рівня (Java, JavaScript, Python, Perl) буде використовувати трохи більше пам’яті, ніж C, і буде трохи повільніше для мов скриптів, але, ймовірно, це буде незначним для вашого випадку використання. Тому перепросіть stackoverflow із точними деталями, які вам потрібні, і хтось може запропонувати вам один вкладиш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.