如何优化词典/单词表?

如何优化词典/单词表?

我有一份 4.09 GB 的单词表/词典crackstation.txt。刚才单词和数字按通常顺序排列:

0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT uUvVwWxXyYzZ

我如何重新排列顺序,如下所示:

tTaAsShHwWiIoObBmMfFcCdDpPnNeEgGrRyYuUvVjJkKqQzZxX 1023985467

这个序列按照流行程度排列了英文单词的首字母,从最流行(左)到最不流行(右)

答案1

使用 grep、sed、awk 和 sort 等工具,你可以实现一些答案其他网站。它们包括(如果您通常想要 b,那么 d,然后是其他所有内容):

按照所需顺序拉出线,从第一条开始,然后是第二条,等等”

grep '^b' myfile > outfile
grep '^d' myfile >> outfile
grep -v '^b' myfile | grep -v '^d' | sort >> outfile

首先添加自定义“排序键”,然后排序,然后将其删除:

sed -e 's/^b/0&/' -e t -e 's/^d/1&/' -e 't' -e 's/^/2/' |
sort |
sed 's/^.//'

最简单的看起来是:

使用诸如 Perl、Python 或 Ruby 之类的语言,让您轻松指定自定义排序函数。

perl -e 'print sort {($b =~ /^[bd]/) - ($a =~ /^[bd]/) ||
     $a cmp $b} <>'
python -c 'import sys; sys.stdout.write(sorted(sys.stdin.readlines(), key=lambda s: (0 if s[0]=="b" else 1 if s[0]=="d" else 2), s))'

或者尝试 awk(没有给出解释,YMMV):

sort myfile | awk '$0 ~ /^b/ || $0 ~ /^d/ {print} $0 !~ /^b/ && $0 !~ /^d/ { a[f++] = $0 } END { for (word = 0; word < f; word++) { print a[word] } }'

相关内容