首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一堆文件中查找拼写错误的单词

如何在一堆文件中查找拼写错误的单词
EN

Stack Overflow用户
提问于 2013-12-30 16:52:12
回答 1查看 82关注 0票数 0

我有大约10k个java文件,我需要在这些java文件中为double-quotes中的字符串查找拼写错误的单词

下面是double-quotes中的字符串

find . -name "*.java" -exec grep -Po '".*?"' {} \;

但除此之外,我不知道如何使用spell

EN

回答 1

Stack Overflow用户

发布于 2013-12-30 22:49:28

我只有Linux和ispell可用,所以如果你不在Linux上,以下内容可能不适用于你(原样)。如果您只想查找拼写错误的单词并列出建议,那么您可以使用

代码语言:javascript
复制
find . -name "*.java" -exec grep -Po '"([^"\\]|\\.)*"' {} \; \
| ispell -a -S

-a选择管道模式,-S禁用排序,排序倾向于首先列出更好的替代项。

如果您想就地修复字符串,那么您可能需要使用如下内容

代码语言:javascript
复制
TEMP=`mktemp`
find . -name "*.java" | xargs grep -l '"...*"' \
| xargs echo /usr/bin/ispell -F ./so20836228-java-deformatter.sh > $TEMP
source $TEMP

这将生成使用以下ispell Java“deformatter”的拼写检查命令:

代码语言:javascript
复制
#!/bin/sh
# Experimental Java ispell deformatter: use at your own risk!
/bin/sed -e '1,$ {
# introduce per-character state
s/\(.\)/\1_/g
# mark string literals
s/"_\(\(\([^"\\]_\|\\_._\)\)*\)"_/"B\1"E/g
# wipe out chars before string literals
:b s/._\(.\)B/ B\1B/g ; t b
# wipe out chars after string literals
:e s/\(.\)E._/\1E E/g ; t e
# remove per-character state
s/\(.\)./\1/g
# get rid of escape sequences
s/\\./  /g
}'

使用这个实验性的反格式化程序的风险自负。在处理文件之前对其进行备份。(反格式化程序中的错误可能会损坏拼写检查的文件。参见ispell手册页:程序必须为输入的每个字符恰好生成一个输出字符,否则ispell将失去同步并损坏输出文件。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20836228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档