【发布时间】:2018-07-11 08:07:58
【问题描述】:
我想知道是否有任何工具可以为 bash 终端匹配几乎同一个词。
在以下名为 list.txt 的文件中,每行包含 1 个单词:
ban
1ban
12ban
12ban3
很容易找到含有“ban”的词
grep -E "*ban*" list.txt
问题:
如何实际匹配具有 x 字母差异的单词? 使用搜索词“ban”,我希望 X=1 匹配“1ban”。
关于距离的概念,我想要最大: X 删除 或 X 替换 或 X 次插入
任何工具,但最好是可以在 bash 终端上作为命令行调用的工具。
注意:Levenshtein 距离将插入 2 个字母计为 1 个差异。这不是我想要的。
【问题讨论】:
-
也许你想要
grep "[a-z]anana" list.txt?甚至grep "[^[:space:]]anana" list.txt。可能,你的答案是already here。 -
如果 Python 发挥作用,您可以使用 PyPi 正则表达式包并结合正则表达式功能使用模糊匹配。
-
您正在为一组未知的需求提供一些解决方案。这不是一个好主意,因为没有确切的要求,所有解决方案都被认为是好的和错误的 - 请用一组真实的要求更新问题。您是否在搜索整个单词?您要考虑哪些修改?只是没有插入/删除的替换?请回答问题。
-
没错,我真的明白为什么很难回答这个问题。距离的概念可以用不同的方式来解释。我正在寻找整个单词,我实际上想要最大 X 差异(所以 1 个删除或 1 个替换或 1 个删除)。你能更新你的答案吗?
标签: regex linux bash terminal similarity