通过 aspell 过滤文档

通过 aspell 过滤文档

我需要获得一个干净的 txt 文档,我的第一个方法是使用 aspell。问题是我需要批量使用它,没有交互模式。每个 txt 文件都通过管道传输到 aspell,并且必须返回一个已删除非字典单词的新文档。

我发现了相反的行为:使用列出非字典单词

cat $file | aspell list | sort -u -f 

aspell 是实现清理文件夹的正确工具吗?自动替换拼写错误的单词怎么样? (使用预定义的列表文件)

答案1

sed -E -e "s/$(aspell list <file | sort -u | paste -s -d'|' |
               sed -e 's/^/\\b(/; s/$/)\\b/' )//g" \
    file > newfile

这使用命令替换 $(...)将 的输出插入到搜索和替换操作aspell list <$file中。sed

aspell的输出也是唯一排序的,并paste用于将每一行与|.最后,它通过 sed 进行管道传输以添加\b单词边界锚以及左括号和右括号。所有这些都构造了一个有效的扩展正则表达式,例如用作搜索和替换命令\b(word1|word2|word3|...)\b中的搜索正则表达式。sed

您可以使用以下命令测试整个命令的结果:diff -u file newfile

AFAIK,aspell没有自动更正模式。这可能是一件好事。

相关内容