违规处罚的agrep


16

我使用tre-agrep (手册页),的实施方案agrep (手册页),来执行近似模式匹配。该实用程序根据Levenshtein距离搜索匹配项,并且用户可以配置应用于替换,插入或删除编辑的罚分。

但是,我想在查询的整个长度上应用不同的权重,即在查询的开头(左端)要比在右边的删除权重低。该man实用程序的页面并不表示可以进行这种控制。

是否有其他命令行工具可以近似匹配并更好地控制不匹配惩罚?


5
AFAIK,agrep是唯一的。鉴于它在UNIX世界中相对模糊(这太糟糕了),我什至惊讶于您甚至知道它。从理论上讲,您可以在源代码中调整这些权重,但是我不知道这是否可行。您是否尝试过联系工具的作者或什至是工具的原始论文?请注意,它们现在可能已经是老屁了:)
Otheus

3
@Otheus老屁仍然能够写代码;-)
库萨兰达

编写一个Levenshtein-matching实用程序并不难,其插入/删除/替换成本定义为Python或Awk中的表达式。实际上,乏味的部分是所有可能的命令行选项。如果OP愿意显示一个典型的命令行,并告诉agrep他们实际需要哪些选项,我可能会提出一些建议。实际上,计算两个琴弦的Levenshtein距离非常容易。我建议围绕GNU awk调用使用一个shell脚本。
Nominal Animal

Answers:


1

否。这种自定义不属于Linux工具的范围,而是属于编写自己的代码的范围。使用流行的高级语言(Java,JavaScript,Python,Perl)将比C使用更多的内存,而对于脚本语言来说则要慢一些,但是对于您的用例而言,可以忽略不计。因此,使用您需要的详细信息重新询问stackoverflow,某人可能会为您提供一个衬板。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.