如何从 posix shell 中的字符串中获取随机单词?
How can I get a random word from a string in posix shell?
我在 posix 脚本中有一个包含几个单词的字符串:
mystr="word1 word2 word3"
我想随机选一个词。所以我最后做了:
echo "$mystr" | cut -d " " -f "$(shuf -i 1-"$(echo "$mystr" | wc -w)" -n 1)"
虽然这看起来很难看。有更好的做法吗?
下面介绍如何使用 awk 将字符串拆分为数组,然后打印数组的随机元素。
echo "word1 word2 word3" |
awk 'BEGIN { srand() }
{ split([=10=],a); print a[1+int(rand()*length(a))] }'
在 busybox 上测试过,但应该可以在任何 POSIX 系统上工作。
我在 posix 脚本中有一个包含几个单词的字符串:
mystr="word1 word2 word3"
我想随机选一个词。所以我最后做了:
echo "$mystr" | cut -d " " -f "$(shuf -i 1-"$(echo "$mystr" | wc -w)" -n 1)"
虽然这看起来很难看。有更好的做法吗?
下面介绍如何使用 awk 将字符串拆分为数组,然后打印数组的随机元素。
echo "word1 word2 word3" |
awk 'BEGIN { srand() }
{ split([=10=],a); print a[1+int(rand()*length(a))] }'
在 busybox 上测试过,但应该可以在任何 POSIX 系统上工作。