使用jq条件提取JSON层级不同位置的035与999标签子字段值
jq字段提取方案
错误原因
- 原有写法遍历
fields数组的单个元素时,同时尝试提取035和999的值,但fields下每个子元素仅对应一个标签,不会同时存在035和999字段,因此逐元素拼接的数组会大量出现null、空值 - 未加安全访问符
?时,访问不存在的035字段会返回null,对null执行迭代操作就会触发报错
正确实现
使用变量分别存储全局筛选后的目标值,再统一输出:
jq -r ' # 筛选符合条件的035子字段a存入变量 ($fields[] | select(."035"?.ind1 == "0" and ."035"?.ind2 == "0") | ."035".subfields[].a) as $a # 筛选999子字段s存入变量 | ($fields[] | select(."999") | ."999".subfields[].s) as $s # 制表符拼接输出 | "\($a)\t\($s)" ' 输入文件路径
输出结果
ocm00000001projmusemuse13792 020d182f-ba5d-4bbe-a2eb-e4390aa0736c
内容的提问来源于stack exchange,提问作者Kyle Banerjee
相关产品推荐
相关产品推荐

