如何使用 Linux 获取文本中所有拼写错误的单词的列表?

Jon*_*han 5 linux vim command-line

我有一个文本,其中包含许多拼写错误的单词。我想得到所有这些单词的列表,所以对于这样的文本:

This is just a normall line with some speling mistakes in it. 
Run Code Online (Sandbox Code Playgroud)

它会返回:

normall speling
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,最好使用 Linux 工具,如 aspell 或 vim?

Jon*_*ech 4

您可以使用aspell -a它来执行此操作,并从标准输出获取文件。这将输出带有行号和替代拼写的单词:

cat example.txt | aspell -a
Run Code Online (Sandbox Code Playgroud)

为了更好地清理你的列表,我会使用类似的东西:

cat aspell.txt | aspell -a | cut --delimiter ' ' --fields 2 | grep --invert-match '*'
Run Code Online (Sandbox Code Playgroud)

解释第二组命令: 的输出aspell -a有一个*拼写正确的单词,拼写错误的单词的输出如下:

& dev 26 101: Devi, derv, DEC, Dec, deb, DE, def, div, Dave, dive, dove, DEA, Dee, dew, Del, Dem, Nev, Rev, deg, den, rev, Davy, deaf, defy, diva, TV
Run Code Online (Sandbox Code Playgroud)

dev是这里拼写错误的单词,当用空格分隔时,它位于第二“列”中。因此,我们通过管道输出aspellcut仅获取第二列。我们还通过管道grep删除所有带有 的行*

| sort | uniq即使拼写错误的单词多次出现在文本中,您也可以仅将其追加到列表中一次。

  • 请解释一下你的第二组命令的作用。 (2认同)