JQ中的可选密钥

  • 本文关键字:密钥 JQ json bash jq
  • 更新时间 :
  • 英文 :


输入内容(somejson.json(是

{ "m1": "1 some m1", "m2": null , "m3" : "unwanted"}
{ "m1": "2 some m1", "m3" : "unwanted"}
{ "m1": "3 some m1", "m2": "3 some m2" , "m3" : "unwanted"}
{ "m1": "4 some m1", "m3" : "unwanted"}

是否有提取的选项,例如M1。还要提取M2如果存在?

示例。对于M1,我使用以下命令

cat somejson.json |jq '.m1'

输出

"1 some m1"
"2 some m1"
"3 some m1"
"4 some m1"

对于M2,我使用以下命令

cat somejson.json |jq '.m2'

输出

null
null
"3 some m2"
null

,但我想要合并的结果,包括M1和M2,如下

"1 some m1"
"2 some m1"
"3 some m1"
"3 some m2"
"4 some m1"

获得两个值;如果不存在,它们将是null。然后只需从结果中过滤零。

<somejson.json jq '.m1, .m2 | select(. != null)'

始终提取m1

jq '.m1, if (.m2 != null) then .m2 else empty end' somejson.json

最新更新