我想在我的* NIX机器上从/usr/share/dict/words
返回一个随机单词。我已经使用BASH,AWK和SED编写了以下脚本来完成它,但我觉得它应该可以使用AWK单独使用RN
和NF
字段来编写。
#!/bin/bash
get_secret_word () {
awk '/^[A-Za-z]+$/ {if (length($1) > 3 && length($1) < 9)
print $1}' /usr/share/dict/words > /tmp/word_list
word_list_length=$(wc -l /tmp/word_list | awk '{print $1}')
random_number=$(( $RANDOM%$word_list_length ))
secret_word=$(sed "${random_number}!d" /tmp/word_list)
return $secret_word
}
get_secret_word
echo $secret_word
有什么建议吗?我喜欢AWK,我想更好地理解它。
答案 0 :(得分:1)
尝试类似:
awk '
BEGIN {
srand('"$RANDOM"')
}
{
if (/^[A-Za-z]+$/ && length() > 3 && length() < 9)
words[i++] = $1
}
END {
print words[int(rand() * i)]
}' /usr/share/dict/words
将单词存储在内存中还是存储在文件中取决于您的使用情况。
无论如何。