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

如何使用jq移除JSON数组的最后三个元素?

解决jq提取数组并移除最后三个元素的问题

你的问题出在两个关键点:

  • 多余的sort操作:版本号作为字符串排序时,字典序会打乱原有的版本顺序,比如2.9.10会排在2.9.7前面,导致后续切片结果完全不符合预期。
  • 切片方向错误:[:3]是取排序后数组的前3个元素,而这恰好是你需要移除的内容。

要保留原数组顺序并排除最后三个元素,直接使用负数索引切片即可,不需要排序:

输出每行一个元素

echo '{ "tags": [ "2.9.7", "2.9.8", "2.9.9", "2.9.10", "2.9.11", "2.9.12" ]}' | jq -r '.tags[:-3][]'

输出结果:

2.9.7
2.9.8
2.9.9

输出空格分隔的字符串

如果需要和你期望的格式一致(空格拼接),用join(" ")处理切片后的数组:

echo '{ "tags": [ "2.9.7", "2.9.8", "2.9.9", "2.9.10", "2.9.11", "2.9.12" ]}' | jq -r '.tags[:-3] | join(" ")'

输出结果:

2.9.7 2.9.8 2.9.9

补充说明

[:-3]表示从数组开头截取到倒数第3个元素之前(不包含倒数第3个),这个写法不受数组长度限制,不管数组有多少元素,都会自动去掉最后三个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:52:23