我有大约10k个java文件,我需要在这些java文件中为double-quotes中的字符串查找拼写错误的单词
下面是double-quotes中的字符串
find . -name "*.java" -exec grep -Po '".*?"' {} \;
但除此之外,我不知道如何使用spell。
发布于 2013-12-30 22:49:28
我只有Linux和ispell可用,所以如果你不在Linux上,以下内容可能不适用于你(原样)。如果您只想查找拼写错误的单词并列出建议,那么您可以使用
find . -name "*.java" -exec grep -Po '"([^"\\]|\\.)*"' {} \; \
| ispell -a -S-a选择管道模式,-S禁用排序,排序倾向于首先列出更好的替代项。
如果您想就地修复字符串,那么您可能需要使用如下内容
TEMP=`mktemp`
find . -name "*.java" | xargs grep -l '"...*"' \
| xargs echo /usr/bin/ispell -F ./so20836228-java-deformatter.sh > $TEMP
source $TEMP这将生成使用以下ispell Java“deformatter”的拼写检查命令:
#!/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将失去同步并损坏输出文件。)
https://stackoverflow.com/questions/20836228
复制相似问题