Shell 如何在一堆文件中查找拼写错误的单词
我有大约10k个Shell 如何在一堆文件中查找拼写错误的单词,shell,unix,grep,spell-checking,Shell,Unix,Grep,Spell Checking,我有大约10k个java文件,我需要在java文件中查找拼写错误的单词,以查找双引号中的字符串 下面是在双引号中给我的字符串 find-名称“*.java”-execgrep-Po'.*”?“{}\ 但是我不知道如何使用拼写。我只有可用的Linux和ispell,因此如果您不在Linux上,以下可能对您不起作用(按原样)。如果你只是想找到拼写错误的单词,并列出建议,那么你可以使用 find . -name "*.java" -exec grep -Po '"([^"\\]|\\.)*"' {}
java
文件,我需要在java
文件中查找拼写错误的单词,以查找双引号中的字符串
下面是在双引号中给我的字符串
find-名称“*.java”-execgrep-Po'.*”?“{}\代码>
但是我不知道如何使用拼写
。我只有可用的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”的拼写检查命令:
使用此实验性变形器的风险自负。
在处理文件之前先备份它们。
(变形器中的错误可能会损坏拼写检查文件。
请参阅ispell手册第页:
程序必须为每个输入字符生成恰好一个字符的输出,否则ispell将失去同步并损坏输出文件。
)我没有回答你的问题,但是你的find语句没有正确处理转义引号。@user2799037他的find
和grep
看起来不错
#!/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
}'