zusturk
zusturk

Reputation: 53

Add an object to multiple others and put the results into an array

I have many objects like

   {
      "name":"blablabla1",
      "something": "blablabla"
      "something2": "blablabla"
   }
   {
      "name":"blablabla2",
      "something": "blablabla"
      "something2": "blablabla"
   }
   {
      "name":"blablabla3",
      "something": "blablabla"
      "something2": "blablabla"
   }

I need to merge them with jq, like

jq -s '.' firstone.json secondone.json thirdone.json

After merge, I get:

[
   {
      "name":"blablabla1",
      "something": "blablabla"
      "something2": "blablabla"
   },   
   {
      "name":"blablabla2",
      "something": "blablabla"
      "something2": "blablabla"
   },   
   {
      "name":"blablabla3",
      "something": "blablabla"
      "something2": "blablabla"
   }
]

but I want to add in every object - another one:

   {
      "thisMustBeInEveryarray": "thisone"
   }

But like:

[
   {
      "name":"blablabla1",
      "something": "blablabla"
      "something2": "blablabla"
      "thisMustBeInEveryarray": "thisone"
   },   
   {
      "name":"blablabla2",
      "something": "blablabla"
      "something2": "blablabla"
      "thisMustBeInEveryarray": "thisone"
   },   
   {
      "name":"blablabla3",
      "something": "blablabla"
      "something2": "blablabla"
      "thisMustBeInEveryarray": "thisone"
   }
]

Is it even possible to be done in one iteration with jq? Because if I merge them like jq -s '.' firstone.json secondone.json thirdone.json mustbeinevery.json, I get mustbeinevery.json just like the last element of the whole array.

Upvotes: 1

Views: 53

Answers (1)

oguz ismail
oguz ismail

Reputation: 50805

Specify mustbeinevery.json as the first input so that you can refer to others by inputs keyword, and add them inside an array constructor.

jq '[inputs+.]' mustbeinevery.json firstone.json secondone.json thirdone.json 

Upvotes: 1

Related Questions