You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用yq对数组进行随机排序(洗牌)?

使用yq实现数组随机排序(洗牌)的可行方案

问题场景

已知yq可通过官方方法对数组排序,但需要实现数组随机洗牌。示例数组如下:

- a: banana
- a: cat
- a: apple

尝试执行yq 'sort_by(RANDOM)' sample.yml未成功,已查阅官方相关示例,求可行解决办法。

解决方案

针对yq v4+版本,有两种可行方式:

方式一:用sort_by结合随机函数

你之前用的RANDOM是shell环境变量,yq自身的随机函数是rand——它会生成0到1之间的随机浮点数,以此作为排序依据就能实现随机洗牌:

yq 'sort_by(rand)' sample.yml

方式二:通过索引打乱重排

先生成数组索引的范围,打乱索引顺序后再按新索引提取原数组元素,也能达到洗牌效果:

yq 'range(length) | shuffle | map(.[.])' sample.yml

内容的提问来源于stack exchange,提问作者joannava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:25:19