如何使用jq获取JSON中指定数组字段的前3个元素
解决方案
你当前命令返回全部元素是因为直接遍历了整个identifier数组,只需要在遍历前用jq的数组切片语法截取前3个元素即可。
场景1:保持原有输出格式(system、value各占一行)
直接在数组名后加[:3]截取前3位,命令如下:
jq -r '(.identifier[:3][] | .system, .value)'
执行后输出结果:
urn:oid:1.3.6.1.4.1.19126.3 00396185X urn:oid:2.16.724.4.9.10.2 0831515 urn:oid:2.16.724.4.9.10.2 0831515
场景2:单条元素占一行,system和value用分隔符分隔
如果需要更易读的结构化输出,比如用制表符分隔两个字段,命令如下:
jq -r '.identifier[:3][] | "\(.system)\t\(.value)"'
执行后输出结果:
urn:oid:1.3.6.1.4.1.19126.3 00396185X urn:oid:2.16.724.4.9.10.2 0831515 urn:oid:2.16.724.4.9.10.2 0831515
场景3:输出结构化JSON数组
如果后续还要用工具处理结果,可以输出只包含system、value字段的JSON数组:
jq '.identifier[:3] | map({system, value})'
执行后输出结果:
[ { "system": "urn:oid:1.3.6.1.4.1.19126.3", "value": "00396185X" }, { "system": "urn:oid:2.16.724.4.9.10.2", "value": "0831515" }, { "system": "urn:oid:2.16.724.4.9.10.2", "value": "0831515" } ]
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

