如何为小错误grep文本

时间:2016-04-28 11:24:20

标签: linux bash unix grep

使用标准的Unix工具,如何在文本文件或输出中搜索可能会转换或遗漏1-2个字母的单词?

例如我的输入

function addtion(number, increment)
  return number+increment
end

function additoin(number, increment)
  return number+increment
end

我想在我的输入中搜索addition并匹配addtionadditoin并告诉我。因为它是代码,所以检查字典是不可能的。

目前cat file.txt | grep "addition"只会让我一无所获。

5 个答案:

答案 0 :(得分:9)

您可以使用agrep命令。它可以执行模糊的近似匹配。

以下命令对我有用:

agrep -2 addition file

答案 1 :(得分:1)

你不能与标准的grep进行模糊匹配,但是如果你感兴趣的是特定的拼写错误,你可以构造一个与之匹配的正则表达式。

例如:

 grep add[it]*on

匹配您提供的示例拼写错误。但这对你的目的来说可能不够通用。

更好的方法可能是使用某种特定于代码所用语言的静态分析工具。它可能无法为您提供正确的拼写,但应该能够告诉您函数名称和调用的位置功能使用不同的拼写。

答案 2 :(得分:0)

尝试spell命令。注意:您可能需要一个字典(通常在您的发行版存储库中aspell-en)。

答案 3 :(得分:0)

在linux终端上试试这个:

grep -rnw" text" ./

答案 4 :(得分:0)

正如答案所说,您绝对应该尝试agrep。此外,还有一个更新更快的替代方法ugrep用于模糊搜索。使用-Z2最多允许2个错误:

ugrep -Z2 addition file.txt

插入,删除或替换是一个错误。换位(如additoin中)计为两个错误,即两次替换。使用选项-i进行不区分大小写的搜索,并使用-w匹配整个单词。