如何使用JQ命令生成长度为5、由小写字母(a到z)组成的随机字符串

问题描述 投票:0回答:1

我没有得到任何使用 JQ 过滤器生成随机字符串的函数

我尝试使用 random 和 rand 函数生成随机字符串,但 JQ 给出错误,表示 random 或 rand 未定义。我使用的是1.7版本的JQ,但是这个版本不支持这些功能。

jq
1个回答
0
投票

JQ 没有用于生成随机数据的内置函数,但您可以轻松构建自己的随机数据。例如,如果您有一个像这样的对象数组:

[
  {
    "foo": 42
  },
  {
    "foo": 5
  }
]

想要为每个对象添加一个伪随机的五个字符长的

id
字段,你可以这样做:

def random_strings: 
  def lcg($seed):
    (105*$seed + 1)%pow(26; 5) | ., lcg(.);
    lcg(now) | [97 + (./pow(26; range(5)))%26] | implode;

[., [limit(length; random_strings)]]
| transpose
| map({id: .[1]} + .[0])

结果将是:

[
  {
    "id": "flxai",
    "foo": 42
  },
  {
    "id": "gfqql",
    "foo": 5
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.