【问题标题】:How can I collect data by filename in jq?如何在 jq 中按文件名收集数据?
【发布时间】:2023-01-11 02:01:57
【问题描述】:

我有一些 JSON 文件,例如:

run1.json                                   run2.json
{                                           {
  "Paris": 1, "London": 2                     "Paris": 7, "London": 8, "Perth": 9
}                                           }

我想取出一个文件,例如

{
  "Paris": { "run1": 1, "run2": 7 },
  "London": { "run1": 2, "run2": 8 },
  "Perth": { "run2": 9 }
}

文件名可以保留其 .json 扩展名,这并不重要。我知道我可以使用 input_filename 获取文件名,但很难以这种方式聚合数据。这在jq中可能吗?

如果某些文件包含比其他文件更多的城市是一个巨大的困难,我可以过滤它们,以便子集固定在所有文件上。

【问题讨论】:

    标签: jq


    【解决方案1】:

    使用 reduce 尝试这种方法:

    jq -n '
      reduce (inputs | to_entries[]) as {$key, $value} ({};
        .[$key][input_filename] = $value
      )
    ' run1.json run2.json
    
    {
      "Paris": {
        "run1.json": 1,
        "run2.json": 7
      },
      "London": {
        "run1.json": 2,
        "run2.json": 8
      },
      "Perth": {
        "run2.json": 9
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多