Есть ли способ получить случайные слова из словарных баз, например, из пакетов dict-wn
или freedict? Я ищу способ сделать это, используя скрипт bash или попробуйте инструмент командной строки, если он доступен.
Если список слов является файлом простого текста с одним словом на строку, то одна опция эти 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.
Я одобрил бы shuf
для щипания строк из файла. Мы также должны быть осторожными со словами, потому что это - файл с разделением табуляцией, не просто пробел.
$ shuf -n5 /usr/share/dictd/wn.index | cut -d$'\t' -f1
table game
parsi
tetraneuris grandiflora
synonymously
decimal digit
shuf
занимает 0,011 с здесь. sort -R
(даже без awk
) занимает 2,427 с. Это вызвано тем, что shuf просто ищет в течение времен файла n, в то время как вид читает и обрабатывает каждую строку... В этом случае это - 147 311 строк.
Существует много способов получить случайное слово. Пример для получения пяти слов:
$ sort -R /usr/share/dictd/freedict-nld-eng.index | awk 'NR <= 5 { print $1 }'
verslappen
sport
libretto
golf
kerk
См. man sort
для значения -R
опция (подсказка: Случайный). awk выражение фильтрует на первых пяти записях (строки) и печатает первое поле (не другие столбцы).