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

如何使用jq对字符串数组的每个元素执行sub子串替换操作

错误原因

sub() 是字符串处理函数,仅支持字符串类型的输入,你直接将其作用于提取得到的键名数组,触发了类型不匹配报错。要批量处理数组内的每一个元素,使用 jq 内置的 map() 函数即可实现遍历操作。

解决方案

场景1:输出处理后的数组格式结果

使用 map() 遍历数组每个元素执行子串替换:

jq -r 'with_entries( .key |= ascii_downcase) | keys | map(sub("version$"; ""))' example.json

执行输出:

[
  "appone",
  "appthree",
  "apptwo"
]

场景2:逐行输出单个处理结果

如果不需要数组包裹,在命令末尾添加 .[] 拆分数组即可:

jq -r 'with_entries( .key |= ascii_downcase) | keys | map(sub("version$"; ""))[]' example.json

执行输出:

appone
appthree
apptwo
优化写法

你也可以在处理键名的阶段就完成转小写、去后缀的操作,逻辑更简洁高效:

jq -r 'with_entries(.key |= (ascii_downcase | sub("version$"; ""))) | keys' example.json

内容的提问来源于stack exchange,提问作者Friedrich 'Fred' Clausen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:21:03