如何在shell中打印单词?

时间:2018-02-07 23:32:27

标签: linux shell sh

这是我尝试过的。它有效,但有时打印的字母不是$ len尺寸。

NOT NULL

对于我的程序,我需要准确打印($ len)字数。我无法做到这一点。我的shuffle功能正常。该文件的内容如下:

users_id

$ len = 4后洗牌后的预期输出

events

注意:输出可以是从文件中提取的任何随机单词。只需要指定长度$ len。

1 个答案:

答案 0 :(得分:0)

这是你正在寻找的吗?

$ words=( $(<input.txt) )
$ fourwords() { local sp=""; local a=( "$@" ); for ((i=1;i<=4;i++)); do printf '%s%s' "$sp" "${a[@]:$((RANDOM%${#a[@]})):1}"; sp=" "; done; echo; }
$ fourwords "${words[@]}"
and and the the
$ fourwords one two three four five
two one two three
  • 这将创建输入文件中所有单词的数组
  • 创建一个函数
    • 运行for循环$limit
    • 从数组中打印一个随机字。

使用$words[]数组和简单字符串显示该函数的结果。

如果你感到被迫,你可以支持自定义字数。

$ nwords() { local limit="$1"; shift; local sp=""; local a=( "$@" ); for ((i=1;i<=limit;i++)); do printf '%s%s' "$sp" "${a[@]:$((RANDOM%${#a[@]})):1}"; sp=" "; done; echo; }
$ nwords 3 "${words[@]}"
picking getting the
$ nwords 5 {1..1000}
428 915 636 228 22