Comment grep text pour les petites erreurs

En utilisant les outils Unix standard, comment puis-je rechercher dans un fichier texte ou en sortie un mot avec peut-être 1-2 lettres transposées ou manquées?

Par exemple mon entrée

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

Je voudrais rechercher des addition , faire correspondre des addtion et des additoin à mes commentaires et m’en parler. Parce que c’est du code, vérifier avec un dictionnaire est hors de question.

Actuellement cat file.txt | grep "addition" cat file.txt | grep "addition" ne me rapportera rien.

Vous pouvez jouer avec la commande agrep . Il peut effectuer des correspondances approximatives.

La commande suivante a fonctionné pour moi:

 agrep -2 addition file 

Vous ne pouvez pas faire une correspondance floue avec grep standard, mais si vous êtes intéressé par une faute d’orthographe spécifique, vous pouvez construire une expression régulière qui correspond à celles-ci.

Par exemple:

  grep add[it]*on 

correspond à l’exemple mal orthographié que vous avez donné. Mais ce n’est probablement pas assez général pour vos objectives.

Une meilleure approche consistera probablement à utiliser une sorte d’outil d’parsing statique spécifique au langage dans lequel le code se trouve. Cela ne vous donnera peut-être pas la bonne orthographe, mais vous pourrez indiquer le nom de la fonction et les appels à la fonction. utiliser différentes orthographes.

Essayez la commande de sort . Note: Vous pourriez avoir besoin d’un dictionnaire (généralement aspell-en dans les référentiels de votre dissortingbution).

Essayez ceci sur le terminal Linux:

grep -rnw “text” ./