如何在bash中从ispell的.mwl文件提取前缀词生成纯文本单词词典
解决方案
原生ispell命令支持
存在直接实现需求的ispell内置选项,同时也可以通过bash/perl快速处理,两种方案都可以处理大体积的.mwl文件:
方案1:提取纯基础词(仅移除后缀标记)
如果只需要保留斜杠前的基础单词,不需要展开屈折形式,直接用bash管道处理即可,速度最快:
# 直接读取压缩的.mwl.gz文件,输出去重后的纯基础词表 zcat /usr/share/ispell/<你的词表文件名>.mwl.gz | cut -d '/' -f 1 | sort -u > pure_base_wordlist.txt
方案2:生成包含所有合法变形的完整词典
如果需要将后缀标记对应的所有屈折/派生单词全部展开生成完整词典,使用ispell自带的-e(expand)选项:
zcat /usr/share/ispell/<你的词表文件名>.mwl.gz | ispell -e -d ./ > full_expanded_wordlist.txt
-e:ispell内置的词表展开选项,会根据后缀规则生成所有合法单词-d ./:指定读取标准输入作为词表,避免调用系统默认词表
方案3:Perl单行处理(适配特殊格式场景)
如果词表存在特殊格式,用Perl处理容错性更高:
zcat /usr/share/ispell/<你的词表文件名>.mwl.gz | perl -pe 's/\/.*$//' | sort -u > unique_wordlist.txt
效果验证
用你提供的示例片段处理后,输出的前几条结果如下:
a
A'asia
a'body
a'thing
aaa
AAAS
Aaberg
Aachen
内容的提问来源于stack exchange,提问作者JeanClaudeDaudin
相关产品推荐
相关产品推荐

