【问题标题】:Using JQ to grep boolean and array at the same time使用 JQ 同时 grep 布尔值和数组
【发布时间】:2021-01-18 23:04:47
【问题描述】:

我是 Jq 的新手,开始时遇到了一些麻烦。

我正在制作一个新的 bash 脚本,它从 URL 获取 .json 文件,它需要 grep 多个值,但只将域保存到新文件作为输出。

在此示例中,我需要 grep 使用 identity==true 的所有公司,但仅将数组中与 identity=true 匹配的域保存到新文件中。

我几乎尝试了所有方法,但没有成功。

示例 JSON:

{
    "companies": [
        {
            "name": "CompanyOne",
            "url": "https://companyone.com",
            "identity": false,
            "domains": [
                "companyone.com"
            ]
        },
        {
            "name": "CompanyTwo",
            "url": "https://companytwotwo.com",
            "identity": true,
            "domains": [
                "companytwo.com",
                "companytwotwo.net"
            ]
        }
    ]
}

期望的输出:

companytwo.com
companytwotwo.net

【问题讨论】:

  • 请尽可能遵循minimal reproducible example 准则 - 您的 JSON sn-p 不是有效的 JSON,并且您没有显示您期望的输出。至少展示您所做的一项尝试也可能是一个好主意。由于grep 中的re 指的是正则表达式,如果不涉及正则表达式匹配,最好写“select”。

标签: json select jq


【解决方案1】:

好吧,像这样使用select

cat data.json | jq -r '.companies[] | select(.identity) | .domains[]' > yourfile.txt

试试看https://jqplay.org/s/NKD3-BkXLj

【讨论】:

  • 好东西。我需要添加 select(.identity == true) ,一切终于正常工作。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多