web-dev-qa-db-ja.com

aspellでドキュメントをフィルタリングする

クリーンなtxtドキュメントを取得する必要があり、最初のアプローチはaspellを使用することです。問題は、インタラクティブモードではなく、バッチで必要なことです。すべてのtxtファイルはaspellにパイプされ、非辞書の単語が削除された新しいドキュメントを返す必要があります。

私はちょうど逆の振る舞いを見つけました:を使用して非辞書の単語をリストしてください

cat $file | aspell list | sort -u -f 

Aspellは、そのクリーンなドキュメントフォルダーを実現するための正しいツールですか?スペルミスのある単語の自動置換はどうですか? (事前定義されたリストファイルを使用)

3
jomaweb
_sed -E -e "s/$(aspell list <file | sort -u | paste -s -d'|' |
               sed -e 's/^/\\b(/; s/$/)\\b/' )//g" \
    file > newfile
_

これは コマンド置換$(...)を使用して、_aspell list <$file_の出力をsed検索および置換操作に挿入します。

aspellの出力も一意にソートされ、pasteは各行を_|_で結合するために使用されます。最後に、sedを介してパイプ処理され、_\b_単語境界アンカーと、開き括弧と閉じ括弧が追加されます。これらはすべて、\b(Word1|Word2|Word3|...)\bのような有効な拡張正規表現を作成して、sed search andreplaceコマンドの検索正規表現として使用します。

コマンド全体の結果は、たとえば_diff -u file newfile_でテストできます。

AFAIK、aspellにはオートコレクトモードがありません。これはおそらく良いことです。

1
cas