2010-11-02 5 views
0

J'ai un fichier avec un tas de mots dans lequel beaucoup d'entre eux ne font pas beaucoup de sens tels que 'completemakes' ou même #s mixed with letters/words. Ce dont j'ai besoin est d'utiliser un outil pour les vérifier, s'il existe dans le dictionnaire, sinon, effacez-le.bash - supprimer les mots incorrects

Quelle serait une bonne façon de le faire dans bash?

Merci

Répondre

0

Je me suis amusé à obtenir un seul caractère de citation ici, mais bon, il devrait être aussi difficile à lire car il était d'écrire, non? (En supposant que vos mots sont répertoriés dans words.txt)

awk 'system("grep -i -q " "'"'"'^"$0"$'"'"'" " /usr/share/dict/words") == 0 {print $0};' words.txt 
+0

Juste pour clarifier les choses, en supposant awk est le traitement de la ligne « # certains mauvais mot », alors ce terme grossièrement cité évaluera à^# certains mauvais mot $ ' quand il est passé à grep. Je sais, c'est horrible, et j'ai honte de le mettre sur les interwebs, mais à certains égards, c'est aussi très beau. –

+0

Mes yeux! Ils brûlent! "awk" system ("grep -i -q" "^" $ 0 "$" "/ usr/share/dict/words") == 0 {print $ 0} 'words.txt' –

+0

@Dennis ne gère pas les espaces ou # caractères correctement? J'ai essayé quelque chose comme ça, c'est pourquoi j'ai fini par entourer 0 $ avec des guillemets simples. –

Questions connexes