I am trying to create a new file adding the object defined in country1.json into world.json. Essentially:
world.json
{
"class": "world",
"version": "1.1.0"
}
+
country1.json
{
"class": "country",
"country_1": {
"class": "city",
"name": "seattle"
}
}
=
world_country1.json
{
"class": "world",
"version": "1.1.0",
"country1": {
"class": "country",
"country_1": {
"class": "city",
"name": "seattle"
}
}
}
Using the filename for the objects in country1.json file. I would like to use bash/jq if possible.
Thanks for your help,
Best,
Romain
>Solution :
Use input to access the second file, and redirect using > into another file
jq '.country1 = input' world.json country1.json > world_country1.json
{
"class": "world",
"version": "1.1.0",
"country1": {
"class": "country",
"country_1": {
"class": "city",
"name": "seattle"
}
}
}
If you want to utilize the file’s name for the new field’s name, use input_filename and cut off the last 5 characters (removing .json):
jq '. + (input | {(input_filename[:-5]): .})' world.json country1.json > world_country1.json