如何使用jq传入变量参数替换JSON值并为字段内容添加前后缀
问题修复方案
错误原因
- jq 字符串内的变量不会自动解析,只有使用
\()包裹的内容才会被当作表达式求值,原命令中的$prefix被识别为普通文本,不会替换为传入的变量值 - 原命令添加的
-c参数会输出压缩格式的JSON,和预期的格式化输出结构不一致
修复后命令
场景1:输出格式化JSON(匹配预期格式)
export prefix="sample" jq --arg prefix "$prefix" '(.directory[].file_name |= "AWS_\($prefix)_\(.)_output.json")' test.json
场景2:直接修改原test.json文件
export prefix="sample" jq --arg prefix "$prefix" '(.directory[].file_name |= "AWS_\($prefix)_\(.)_output.json")' test.json > tmp.json && mv tmp.json test.json
效果验证
执行后file_name字段会按照规则拼接前缀、变量值、原始文件名、后缀,最终生成AWS_sample_N11_output.json、AWS_sample_N12_output.json的预期结果。
内容的提问来源于stack exchange,提问作者Abhi S
相关产品推荐
相关产品推荐

