【问题标题】:How do I use JQ to flatten JSON-lines where each is an array into an item-per-line?如何使用 JQ 将每个都是数组的 JSON 行展平为每行一个项目?
【发布时间】:2022-08-07 03:06:24
【问题描述】:

我在底部有 JSON。如果我把它发送到jq \'.a[].b 我得到

[
  \"x1\",
  \"x2\"
]
[
  \"y1\",
  \"y2\"
]

我如何获得逐行输出,没有括号、引号或逗号,如下所示:

x1
x2
y1
y2

输入 JSON 是:

{
  \"a\": [
    {
      \"b\": [
        \"x1\",
        \"x2\"
      ],
      \"z\": \"z\"
    },
    {
      \"b\": [
        \"y1\",
        \"y2\"
      ],
      \"w\": \"w\"
    }
  ]
}

    标签: json jq


    【解决方案1】:

    对每个 b 执行与每个 a 相同的操作。使用 -r 选项获取原始文本,而不是 JSON 字符串值。

    % jq -r '.a[].b[]' tmp.json
    x1
    x2
    y1
    y2
    

    .b输出列表; .b[] 输出列表的每个元素。

    【讨论】:

      【解决方案2】:

      使用您显示的示例,您也可以尝试遵循jq 代码。

      jq -r '(.[] | .[].b)[]'  Input_file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-30
        相关资源
        最近更新 更多