![通过 aspell 过滤文档](https://linux22.com/image/88190/%E9%80%9A%E8%BF%87%20aspell%20%E8%BF%87%E6%BB%A4%E6%96%87%E6%A1%A3.png)
我需要获得一个干净的 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
没有自动更正模式。这可能是一件好事。