【问题标题】:JQ Outputting different elements on the same lineJQ在同一行输出不同的元素
【发布时间】:2022-11-06 17:42:29
【问题描述】:

json输出:

{
  "result": [
    {
      "id": "fcf9728ed6e94078bae9ffe200bf1054",
      "redirect": {
        "source_url": "www.1234.com/acssurgerynews/article/248345/transgender-health/detransitioners-received-poor-evaluation-when",
        "include_subdomains": false,
        "target_url": "https://www.1234.com/viewarticle/962270",
        "status_code": 301,
        "preserve_query_string": false,
        "subpath_matching": false,
        "preserve_path_suffix": false
      },
      "created_on": "2022-09-07T17:12:21Z",
      "modified_on": "2022-09-07T17:12:21Z"
    },
    {
      "id": "fac3ab84691b44219c270a5dd073e374",
      "redirect": {
        "source_url": "www.1234.com/advanced-and-metastatic-breast-cancer/article/248363/breast-cancer/liquid-biopsy-metastatic-breast",
        "include_subdomains": false,
        "target_url": "https://www.1234.com/viewarticle/942277",
        "status_code": 301,
        "preserve_query_string": false,
        "subpath_matching": false,
        "preserve_path_suffix": false
      },
      "created_on": "2022-09-07T17:12:21Z",
      "modified_on": "2022-09-07T17:12:21Z"
    },
    {
      "id": "0ae189027c574eedac22f854b4676568",
      "redirect": {
        "source_url": "www.1234.com/advanced-and-metastatic-breast-cancer/article/249807/breast-cancer/evolving-her2-metastatic-breast",
        "include_subdomains": false,
        "target_url": "https://www.1234.com/viewarticle/963856",
        "status_code": 301,
        "preserve_query_string": false,
        "subpath_matching": false,
        "preserve_path_suffix": false
      },
      "created_on": "2022-09-07T17:12:21Z",
      "modified_on": "2022-09-07T17:12:21Z"
    }
  ],
  "success": true,
  "errors": [],
  "messages": [],
  "result_info": {
    "cursors": {
      "after": "equIy9ku2FDvBVLy0avqNewCdepOQiaIaSilEIhBNwhHDIkcF5EjJkYqPwqeewvR5Rb6UO4LB5moBKoO9puoiyJ9QY_bidbcFtbpp60QzYEl_9Hls0jD_2oINTM_CWJPCBTvzmVu7LlUCNTB_UxXE-Ox6h8vuhE"
    }
  }
}

我希望在同一行输出的内容,例如:

.id,.redirect.source_url,.redirect.target_url,.cursors_after

fcf9728ed6e94078bae9ffe200bf1054,www.123.com/123,https://www.123.com/xxx fcf9728ed6e94078bae9ffe200bf1054,www.123.com/123,https://www.123.com/xxx fcf9728ed6e94078bae9ffe200bf1054,www.123.com/123,https://www.123.com/xxx

【问题讨论】:

    标签: line jq


    【解决方案1】:

    构建要输出的字符串,然后使用-r 命令行按原样发出该字符串(而不是作为 JSON 文字)。

    jq -r '
       .result[] |
       [
          .id,
          .redirect.source_url,
          .redirect.target_url,
          .cursors_after
       ] |
       @csv
    ' json
    

    输出

    "fcf9728ed6e94078bae9ffe200bf1054","www.1234.com/acssurgerynews/article/248345/transgender-health/detransitioners-received-poor-evaluation-when","https://www.1234.com/viewarticle/962270",
    "fac3ab84691b44219c270a5dd073e374","www.1234.com/advanced-and-metastatic-breast-cancer/article/248363/breast-cancer/liquid-biopsy-metastatic-breast","https://www.1234.com/viewarticle/942277",
    "0ae189027c574eedac22f854b4676568","www.1234.com/advanced-and-metastatic-breast-cancer/article/249807/breast-cancer/evolving-her2-metastatic-breast","https://www.1234.com/viewarticle/963856",
    

    Demo jqplay

    【讨论】:

    • 这适用于单条记录,但多条记录将全部出现在一行中,最后带有逗号。我已经编辑了这个问题。
    • @user2193480,您需要显示更多输入数据
    • 更好的是如何从输出中删除引号和结束逗号?
    • 如果您想要 CSV 以外的其他内容,请随时调整
    • 没有尾随逗号,而是尾随空白字段。您说您希望 .cursors_after 作为最后一个字段,但您的数据中缺少它,因此您最终得到一个空白字段。
    【解决方案2】:

    您可以为每个包含您的值的条目构建一个新数组,然后使用join(",") 将所有值连接到一行。 -r/--raw-output 省略顶级字符串周围的引号:

    jq -r '.result[]
    | [.id,.redirect.source_url,.redirect.target_url,.cursors_after]
    | join(",")'
    ``
    
    The difference between `join/1` and `@csv` filters is that `@csv` will escape any embedded commas in the value and automatically wrap all strings in quotes. `join` does not do any escaping and does not add quotes around strings.
    

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多