如何使用jq将文件合并为json,其中文件名是属性选择器,文件内容是值?

埃里克·T

我正在使用jq进行一些json操作。场景是我有一个json文件和许多其他包含json或字符串的文件,我想将它们合并为一个输出。

main.json包含:

{
  "property1": "someValue",
  "sub": {
     "property2": "property2"
   }
}

.property1(这是文件名)包含:

newValue

.sub.property2(这是文件名)包含:

newProperty2

.other(这是文件名)包含:

{
  "complex": {
    "cprop": "cpropvalue"
  }
}

我想将这些文件合并在一起,使用文件名作为jq选择器,并使用文件的内容作为值。输出为:

{
  "property1": "newValue",
  "sub": {
     "property2": "newProperty2"
   },
   "other": {
      "complex": {
        "cprop": "cpropvalue"
      }
   }
}

用例是我有许多要以通用方式合并到json配置文件的键/值对(例如,env vars)。

jq工具非常强大,但是我很难弄清楚该如何做。如果不可能出现最后一种情况(文件的内容是json),则前两种仍然非常有用。根据其他搜索,我认为所有部分都存在(文件名,输入等),但是我正在寻找如何组合它们。

这是一个与紧密相关的问题的解决方案,该问题假定所有文件都包含有效的JSON:

jq '
  def props: 
    split(".") | map(select(length>0));

  reduce inputs as $json (.;
    setpath(input_filename | props; $json) )
' main.json .other .property1 .sub.property2 

点文件可以以任何顺序列出(例如,通过列出.???*),但必须在main.json之后指定。

此处的主要细微之处在于.,出现在后面的第一个reduce将由的内容填充main.json

要使用上述方法解决上述问题,需要将名为.property1和.sub.property2的文件中的原始文本转换为有效的JSON。这可以在预处理步骤中完成,例如,如下所示:

jq -R .property1 | sponge .property1
jq -R .sub.property2 | sponge .sub.property2

随意选择许多其他备选方案和变体:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过文件名过滤文件选择器

来自分类Dev

使用Dropbox API JS选择器时如何显示所选文件名

来自分类Dev

jq合并两个json文件,并为合并文件中的每个文件创建一个密钥作为文件名

来自分类Dev

如何强制 HTML 输入文件选择器在 Ionic(Android) 中给出原始文件名?

来自分类Dev

如何使用python将多个json文件合并为1

来自分类Dev

如何导入文件,其中文件名的部分更改非常频繁?

来自分类Dev

如何从本地文件夹插入图像,其中文件名与 CollectionViewSource 中的项目匹配

来自分类Dev

Android Kotlin:获取FileNotFoundException并从文件选择器中选择文件名?

来自分类Dev

将 JSON 文件中的值插入文件名路径

来自分类Dev

如何使用PowerShell中的文件内容获取文件名

来自分类Dev

将文件内容与其他文件名匹配以提取和合并内容

来自分类Dev

将多个文件合并为一个文件,并在每个文件名后附加部分

来自分类Dev

Google Apps Script - 使用文件名获取驱动器中文件的 URL

来自分类Dev

循环遍历JSON并使用键作为文件名和值作为文件内容创建文件

来自分类Dev

如何从文件中提取数据并从其中一个值构造文件名

来自分类Dev

用 eog 打开一个 PNG 文件,其中文件名有冒号

来自分类Dev

合并多个文件,将文件名保留为列名

来自分类Dev

如何将视频文件作为json数据发送。(不是文件名或路径,而是内容)到Android

来自分类Dev

使用MSBuild将多个JSON文件合并为一个JSON文件

来自分类Dev

如何从Python中文件名列表中的文件名中删除扩展名?

来自分类Dev

如何使用AWK在URL中选择文件名?

来自分类Dev

如何使用DOS命令从文件夹中文件列表的文件名中删除单个字符?

来自分类Dev

如何使用DOS命令从文件夹中文件列表的文件名中删除单个字符?

来自分类Dev

使用NPM将CSS文件合并为单个文件

来自分类Dev

如何根据文件名合并 2 个 CSV 文件

来自分类Dev

如何使用jq合并两个json文件

来自分类Dev

如何使用jq合并这两个JSON文件

来自分类Dev

如何使用jq合并来自多个文件的JSON记录

来自分类Dev

将.bat文件中文件名中包含逗号(,)的文件拖放

Related 相关文章

  1. 1

    通过文件名过滤文件选择器

  2. 2

    使用Dropbox API JS选择器时如何显示所选文件名

  3. 3

    jq合并两个json文件,并为合并文件中的每个文件创建一个密钥作为文件名

  4. 4

    如何强制 HTML 输入文件选择器在 Ionic(Android) 中给出原始文件名?

  5. 5

    如何使用python将多个json文件合并为1

  6. 6

    如何导入文件,其中文件名的部分更改非常频繁?

  7. 7

    如何从本地文件夹插入图像,其中文件名与 CollectionViewSource 中的项目匹配

  8. 8

    Android Kotlin:获取FileNotFoundException并从文件选择器中选择文件名?

  9. 9

    将 JSON 文件中的值插入文件名路径

  10. 10

    如何使用PowerShell中的文件内容获取文件名

  11. 11

    将文件内容与其他文件名匹配以提取和合并内容

  12. 12

    将多个文件合并为一个文件,并在每个文件名后附加部分

  13. 13

    Google Apps Script - 使用文件名获取驱动器中文件的 URL

  14. 14

    循环遍历JSON并使用键作为文件名和值作为文件内容创建文件

  15. 15

    如何从文件中提取数据并从其中一个值构造文件名

  16. 16

    用 eog 打开一个 PNG 文件,其中文件名有冒号

  17. 17

    合并多个文件,将文件名保留为列名

  18. 18

    如何将视频文件作为json数据发送。(不是文件名或路径,而是内容)到Android

  19. 19

    使用MSBuild将多个JSON文件合并为一个JSON文件

  20. 20

    如何从Python中文件名列表中的文件名中删除扩展名?

  21. 21

    如何使用AWK在URL中选择文件名?

  22. 22

    如何使用DOS命令从文件夹中文件列表的文件名中删除单个字符?

  23. 23

    如何使用DOS命令从文件夹中文件列表的文件名中删除单个字符?

  24. 24

    使用NPM将CSS文件合并为单个文件

  25. 25

    如何根据文件名合并 2 个 CSV 文件

  26. 26

    如何使用jq合并两个json文件

  27. 27

    如何使用jq合并这两个JSON文件

  28. 28

    如何使用jq合并来自多个文件的JSON记录

  29. 29

    将.bat文件中文件名中包含逗号(,)的文件拖放

热门标签

归档