2012-09-17 51 views
8

我有一个很大的文本文件,其中包含许多未命中/拼写错误的英文单词。我正在寻找一种在Linux中使用命令行拼写检查器来编辑此文件的方法。我找到了一些方法来做到这一点,但根据我的搜索,所有这些都以互动的方式工作。我的意思是,看到一个错误/拼写错误的词,他们建议对用户进行一些更正,他/她应该选择其中一个。由于我的文件相当大,并且包含许多错误的文字,因此我无法以这种方式对其进行编辑。我正在寻找一种方法来告诉拼写检查器,用第一位候选人替换所有错误的单词。 有没有办法做到这一点? (a/hun)法术是否有这样做的选择?使用命令行非交互式拼写检查文件

问候。

+0

的GNU emacs拼写检查模式似乎符合这个要求,因为你可以replac e一次拼写出所有拼写错误。 –

+0

那么,我必须在emacs中打开文件? – Hakim

+0

是的,但只有一次。 –

回答

5

如果你不需要它来代替每一个错误的词,而只是指出了一个非交互的方式错误,并打印的建议,你可以使用的ispell:

$ ispell -a < file.txt | grep ^\& > errors.txt 

我遗憾的是没有了解任何标准的Linux实用程序,它们可以从命令行执行您的要求,但上述注释中的emacs建议非常接近。

5

您就可以使用这些命令实验:

yes 0 | script -c 'ispell text.txt' /dev/null 

或:

yes 1 | script -c 'aspell check text.txt' /dev/null 

但请记住,结果甚至可以用于简单的事情是穷人:

$ echo The quik broown fox jmps over the laazy dogg > text.txt 
$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 
$ cat text.txt 
The quick brown fox amps over the lazy dog 

aspell似乎更糟糕,所以最好跟ispell一起去。

您需要script命令,因为像ispell这样的命令不需要编写脚本。通常你会管的yes 0输出到一个命令模拟撞击“0”键,所有的时间,但有些命令检测被脚本和拒绝合作:

$ yes 0 | ispell text.txt 
Can't deal with non-interactive use yet. 

幸运的,他们可以用script命令被愚弄:

$ yes 0 | script -c 'ispell text.txt' /dev/null 
Script started, file is /dev/null 
Script done, file is /dev/null 

您可以使用其他文件比的/ dev/null来记录输出:

$ yes 0 | script -c 'ispell text.txt' out.txt 
Script started, file is out.txt 
Script done, file is out.txt 
$ cat out.txt 
Script started on Tue 02 Feb 2016 09:58:09 PM CET 

Script done on Tue 02 Feb 2016 09:58:09 PM CET