jq包括新过滤器内部的过滤器结果

问题描述 投票:0回答:1

我想在另一个jq过滤器中使用jq过滤器的结果。我已经用xargs完成了,但是我觉得它必须是通过简单jq运行的更好方法。

示例:

]$ cat test.json 
{
   "prof" : {
      "Sma00K279a" : {
         "SMLT_RS00075" : {
            "Sma00K279a" : {
               "SMLT_RS00075" : 1.0
            }
         },
         "SMLT_RS00180#" : {
            "Sma00K279a" : {
               "SMLT_RS00180#" : 1.0
            }
         },
         "Smlt0558" : {
            "Sma00K279a" : {
               "Smlt3938" : 1.0
            }
         }
      }
   },
   "redundant_removed" : {
      "Sma00K279a" : {
         "SMLT_RS22460" : "SMLT_RS22690",
         "Smlt0558" : "Smlt3938",
         "Smlt3573" : "Smlt1093"
      }
   }
}

我的解决方案:

]$ jq '.redundant_removed.Sma00K279a|keys[]' test.json |tr -d \"|xargs -tI% jq '.prof.Sma00K279a.%' test.json 
jq .prof.Sma00K279a.SMLT_RS22460 test.json 
null
jq .prof.Sma00K279a.Smlt0558 test.json 
{
  "Sma00K279a": {
    "Smlt3938": 1
  }
}
jq .prof.Sma00K279a.Smlt3573 test.json 
null

我的问题:

是否有更好的方法可以通过一次jq运行呢?

jq
1个回答
0
投票

当然有。

$ jq '.prof.Sma00K279a[.redundant_removed.Sma00K279a|keys[]]' file
null
{
  "Sma00K279a": {
    "Smlt3938": 1
  }
}
null
© www.soinside.com 2019 - 2024. All rights reserved.