Batch-Jobs

通過 aspell 過濾文件

  • May 13, 2016

我需要得到一個乾淨的 txt 文件,我的第一種方法是使用 aspell。問題是我需要批量處理,沒有互動模式。每個 txt 文件都通過管道傳輸到 aspell,並且必須返回一個新文件,其中刪除了非字典單詞。

我發現了相反的行為:列出非字典單詞使用

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

aspell 是實現清理文件夾的正確工具嗎?自動替換拼寫錯誤的單詞怎麼樣?(使用預定義的列表文件)

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

這使用命令替換 $(...)將輸出插入aspell list <$filesed搜尋和替換操作中。

aspell的輸出也是唯一排序paste的,用於將每一行與|. 最後,它通過 sed 管道添加\b單詞邊界錨點以及左括號和右括號。所有這些都構造了一個有效的擴展正則表達式,就像在搜尋和替換命令\b(word1|word2|word3|...)\b中用作搜尋正則表達式一樣。sed

您可以使案例如測試整個命令的結果diff -u file newfile

AFAIK,aspell沒有自動更正模式。這可能是一件好事。

引用自:https://unix.stackexchange.com/questions/282715