2016-04-28 30 views
3

使用標準Unix工具如何在文本文件或輸出中搜索可能有1-2個字母轉置或丟失的單詞?如何爲小錯誤grep文本

比如我輸入

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

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

我想在我輸入搜索addition和匹配addtionadditoin,告訴我這件事。因爲它是代碼,檢查字典是不可能的。

當前cat file.txt | grep "addition"只會讓我無所適從。

+1

使用grep,您可以搜索詞與「廣告」或「一」開始,唯一結尾「 n'以及可能的字符集。爲此你可以做一些像'grep -En'a [dito] + n「file --color'的東西。 – blackSmith

回答

9

你可以玩agrep命令。它可以執行模糊的近似匹配。

下面的命令爲我工作:

agrep -2 addition file 
1

你不能做一個模糊匹配標準的grep,但如果有你感興趣的特定的拼寫錯誤,你可以構建一個匹配的正則表達式那些。

例如:

grep add[it]*on 

匹配的例子拼錯你給。但這可能不足以達到您的目的。

更好的方法可能是使用某種特定於代碼所用語言的靜態分析工具。它可能不會給你正確的拼寫,但應該能夠告訴你函數名稱和對函數的調用使用不同的拼寫。

0

嘗試使用spell命令。注意:您可能需要一本字典(通常位於發行版存儲庫中的aspell-en)。

0

試試這個Linux終端上:

grep的-rnw「文本」 ./