precise Asked: 2014-07-08 08:07:58 +0800 CST2014-07-08 08:07:58 +0800 CST 2014-07-08 08:07:58 +0800 CST 如何从电子词典数据库或文本文件中随机提取单词? 772 有没有办法像从或 freedict 的包中那样从字典数据库中获取随机单词?dict-wn我正在寻找一种通过使用 bash 脚本或尝试使用命令工具(如果可用)来做到这一点的方法。 command-line 3 个回答 Voted Best Answer steeldriver 2014-07-08T08:29:41+08:002014-07-08T08:29:41+08:00 如果单词列表是一个纯文本文件,每行一个单词,那么一个选项是shuf命令,例如 $ shuf -n5 /usr/share/dict/american-english resuscitated Lawson concatenate nonsmoker's balmiest 看man shuf SHUF(1) User Commands SHUF(1) NAME shuf - generate random permutations SYNOPSIS shuf [OPTION]... [FILE] shuf -e [OPTION]... [ARG]... shuf -i LO-HI [OPTION]... DESCRIPTION Write a random permutation of the input lines to standard output. Oli 2014-07-08T08:34:50+08:002014-07-08T08:34:50+08:00 我更喜欢shuf从文件中提取行。我们还需要注意单词,因为它是一个制表符分隔的文件,而不仅仅是空格。 $ shuf -n5 /usr/share/dictd/wn.index | cut -d$'\t' -f1 table game parsi tetraneuris grandiflora synonymously decimal digit shuf这里需要 0.011s。sort -R(即使没有awk)需要 2.427 秒。这是因为 shuf 只是在文件中搜索n次,而 sort 正在读取和处理每一行......在这种情况下,这是 147311 行。 Lekensteyn 2014-07-08T08:17:57+08:002014-07-08T08:17:57+08:00 有很多方法可以获取随机词。检索五个单词的示例: $ sort -R /usr/share/dictd/freedict-nld-eng.index | awk 'NR <= 5 { print $1 }' verslappen sport libretto golf kerk 请参阅选项man sort的含义-R(提示:随机)。awk 表达式过滤前五个记录(行)并打印第一个字段(而不是其他列)。
如果单词列表是一个纯文本文件,每行一个单词,那么一个选项是
shuf
命令,例如看
man shuf
我更喜欢
shuf
从文件中提取行。我们还需要注意单词,因为它是一个制表符分隔的文件,而不仅仅是空格。shuf
这里需要 0.011s。sort -R
(即使没有awk
)需要 2.427 秒。这是因为 shuf 只是在文件中搜索n次,而 sort 正在读取和处理每一行......在这种情况下,这是 147311 行。有很多方法可以获取随机词。检索五个单词的示例:
请参阅选项
man sort
的含义-R
(提示:随机)。awk 表达式过滤前五个记录(行)并打印第一个字段(而不是其他列)。