11

大量のテキスト ファイルがあり、スペルミスやスペルの間違った英単語が多数含まれています。Linux でコマンドライン スペル チェッカーを使用してこのファイルを編集する方法を探しています。これを行う方法をいくつか見つけましたが、私の検索によると、それらはすべてインタラクティブに機能します。つまり、スペルが間違っている単語やスペルが間違っている単語を見つけた場合、ユーザーにいくつかの修正を提案し、ユーザーはそれらのいずれかを選択する必要があります。私のファイルはかなり大きく、多くの間違った単語が含まれているため、この方法で編集することはできません。最初の候補を使用してすべての間違った単語を置き換えるようにスペルチェッカーに伝える方法を探しています。これを行う方法はありますか?(a/hun)spell にはそうするためのオプションがありますか?

よろしく。

4

2 に答える 2

7

次のようなコマンドを試すことができます。

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 の方がいいでしょう。

scriptispell などの一部のコマンドはスクリプト化されたくないため、このコマンドが必要です。通常、出力を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
于 2016-02-02T20:59:47.320 に答える
6

すべての間違った単語を置き換える必要はなく、単にエラーを指摘し、非対話的な方法で提案を表示する場合は、ispell を使用できます。

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

残念ながら、コマンド ラインから要求されていることを実行する標準の Linux ユーティリティについては知りませんが、上記のコメントの emacs の提案はそれに近いものです。

于 2014-03-09T16:33:56.973 に答える