如何用jq从OCI嵌套输出中同时提取多个指定字段?
解决方法
直接把三个字段放在同一个处理管道里,就能一次性提取每条VM对应的信息:
# 每个字段单独一行输出,同一条VM的三个字段连续排列 jq -r '.data[] | ."display-name", ."id", ."shape-config"."memory-in-gbs"'
如果希望同一条VM的三个字段在同一行展示,推荐用数组+制表符格式化的方式,后续处理更方便:
jq -r '.data[] | [."display-name", .id, ."shape-config"."memory-in-gbs"] | @tsv'
也可以手动拼接字符串自定义分隔符(比如空格):
jq -r '.data[] | ."display-name" + " " + .id + " " + (.["shape-config"]["memory-in-gbs"] | tostring)'
说明
- 第一种写法会按顺序输出每个字段,每条VM的三个字段连续出现;
@tsv会自动处理数值转字符串的问题,并且用制表符分隔字段,适合导入Excel或做脚本处理;- 手动拼接时,因为
memory-in-gbs是数值类型,需要用tostring转成字符串才能和其他文本字段拼接。
内容的提问来源于stack exchange,提问作者awreneau
相关产品推荐
相关产品推荐

