【问题标题】:Match a string if maximally two characters differ如果最多两个字符不同,则匹配一个字符串
【发布时间】:2014-10-16 12:07:35
【问题描述】:

我有一个名为 list.txt 的不同名称的列表。我想检查此列表中是否已存在名称。但是,我想说明一些用户输入错误和大写字母(即输入“Jefferson”而不是“Jefferson”,或输入“Muller”而不是“Müller”)。我知道在 grep -i 命令中可以忽略大写字母(见下文)。是否有一个(grep)shell 命令也可以设置最大可能不同的字符数?例如。最多应允许 2 个字符差异,这意味着如果键入“Mueller”,仍会找到“Müller”)。

#!/bin/sh

echo "Type in name"
read prompt
p=/my-directory-to-listfile/
grep -i "$prompt" /$p/list.txt

【问题讨论】:

  • 有趣...我认为grep 不允许您这样做。我会选择awk,循环遍历每个字符并保留一个不同字符的计数器。

标签: linux shell grep


【解决方案1】:

Agrep(近似 grep)应该适合您,或者使用 levenshtein 实现。大多数语言都有它。

【讨论】:

  • 感谢您的宝贵建议!确实 agrep 完成了这项工作:-2 表示最多两个错误,-i 表示忽略案例:agrep -2 -i "$prompt" /$p/list.txt
猜你喜欢
  • 2017-07-06
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多