使用jq按指定key值提取JSON的description字段并转为Bash变量
使用jq筛选JSON并转换为Bash变量
1. jq动态匹配并提取目标字段
假设你的JSON数据存放在data.json文件中,或通过管道传入,用以下命令动态筛选short_description精确等于"01. Project validation"的对象,提取其description值:
jq -r '.change_tasks[] | select(.short_description == "01. Project validation") | .description' data.json
命令拆解:
.change_tasks[]:遍历change_tasks数组的每一个元素select(.short_description == "01. Project validation"):精准筛选符合条件的对象.description:提取目标对象的description字段-r:输出原始字符串(去除JSON格式的引号)
2. 将逗号分隔值转为Bash数组变量
把jq的输出结果转为Bash数组,方便后续和其他值列表校验:
# 提取description并分割为数组 IFS=',' read -ra VALIDATION_LIST <<< "$(jq -r '.change_tasks[] | select(.short_description == "01. Project validation") | .description' data.json)" # 可选:验证数组内容 for item in "${VALIDATION_LIST[@]}"; do echo "待校验项:$item" done
关键说明:
IFS=',':设置内部字段分隔符为逗号read -ra VALIDATION_LIST:将逗号分隔的字符串拆分为数组元素- 后续可直接通过
"${VALIDATION_LIST[@]}"调用数组所有元素,与其他值列表做比对校验
提示:如果
description中的值包含空格或特殊字符,该方法依然能保留元素的原始格式
内容的提问来源于stack exchange,提问作者Matthew Owen
相关产品推荐
相关产品推荐

