How to find and replace multiple field values using jq?












5















In the following json file,



{
"email": "xxx",
"pass": "yyy",
"contact": [
{
"id": 111,
"name": "AAA"
}
],
"lname": "YYY",
"name": "AAA",
"group": [
{
"name": "AAA",
"lname": "YYY",
}
],


I need to look for the key "name" and replace its value to "XXX" at all places. Which jq command does that ?










share|improve this question





























    5















    In the following json file,



    {
    "email": "xxx",
    "pass": "yyy",
    "contact": [
    {
    "id": 111,
    "name": "AAA"
    }
    ],
    "lname": "YYY",
    "name": "AAA",
    "group": [
    {
    "name": "AAA",
    "lname": "YYY",
    }
    ],


    I need to look for the key "name" and replace its value to "XXX" at all places. Which jq command does that ?










    share|improve this question



























      5












      5








      5


      1






      In the following json file,



      {
      "email": "xxx",
      "pass": "yyy",
      "contact": [
      {
      "id": 111,
      "name": "AAA"
      }
      ],
      "lname": "YYY",
      "name": "AAA",
      "group": [
      {
      "name": "AAA",
      "lname": "YYY",
      }
      ],


      I need to look for the key "name" and replace its value to "XXX" at all places. Which jq command does that ?










      share|improve this question
















      In the following json file,



      {
      "email": "xxx",
      "pass": "yyy",
      "contact": [
      {
      "id": 111,
      "name": "AAA"
      }
      ],
      "lname": "YYY",
      "name": "AAA",
      "group": [
      {
      "name": "AAA",
      "lname": "YYY",
      }
      ],


      I need to look for the key "name" and replace its value to "XXX" at all places. Which jq command does that ?







      sed json jq






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Oct 19 '18 at 19:53









      Rui F Ribeiro

      39.5k1479133




      39.5k1479133










      asked Oct 19 '18 at 12:12









      user2181698user2181698

      283




      283






















          3 Answers
          3






          active

          oldest

          votes


















          6














          Using jq based on the walk function (needs a recent version):



          jq 'walk(.name?="XXX")' file


          If your jq doesn't support the walk function, just define it as:



          jq '
          # Apply f to composite entities recursively, and to atoms
          def walk(f):
          . as $in
          | if type == "object" then
          reduce keys as $key
          ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
          elif type == "array" then map( walk(f) ) | f
          else f
          end;
          walk(.name?="XXX")
          ' file


          Credits: https://github.com/stedolan/jq/issues/963






          share|improve this answer
























          • Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

            – user2181698
            Oct 19 '18 at 14:29













          • @user2181698 are you sure you're running that command on linux/unix?

            – qubert
            Oct 19 '18 at 14:57











          • Perhaps @user2181698 is using an unusual shell and neglected to mention it?

            – Michael Hampton
            Oct 19 '18 at 17:55



















          2














          jq's assignment operations can perform an update on as many locations at once as you can name and are made for this sort of situation. You can use



          jq '(.. | .name?) |= "XXXX"'


          to find every field called "name" anywhere and replace the value in each all at once with "XXXX", and output the resulting object.



          This is just the ..|.a? example from the recursive-descent documentation combined with update assignment.



          It uses the recursive descent operator .. to find every single value in the tree, then pulls out the "name" field from each of them with .name, suppresses any errors from non-matching values with ?, and then updates the object in all those places at once with "XXXX" using the update-assignment operator |=, and outputs the new object.



          This will work no matter what the file structure is and update every name field everywhere.





          Alternatively, if the file always has this structure, and it's those particular "name" fields you want to change, not just any old name, you can also just list them out and assign to them as a group as well:



          jq '(.name, .contact.name, .group.name) |= "XXXX"'


          This does the same assignment to




          1. the "name" field of the top-level object;

          2. the "name" field of every object in the "contact" array; and

          3. the "name" field of every object in the "group" array.


          all in one go. This is particularly useful if the file might have other name fields in there somewhere unrelated that you don't want to change. It finds just the three sets of locations named there and updates them all simultaneously.





          If the value is just a literal like it is here then plain assignment with = works too and saves you a character: (..|.name?)="XXXX" - you'd also want this if your value is computed based on the whole top-level object. If instead you want to compute the new name based on the old one, you need to use |=. If I'm not sure what to use, |= generally has slightly nicer behaviour in the corner cases.



          If you have multiple replacements to do, you can pipe them together:



          jq '(..|.name?) = "XXXX" | (..|.lname?) = "1234"'


          will update both the "name" and "lname" fields everywhere, and output the whole updated object once.





          A few other approaches that may work:





          • You could also be really explicit about what you're selecting with



            (..|objects|select(has("name"))).name |= "XXXX"`


            which finds everything, then just the objects, then just the objects that have a "name", then the name field on those objects, and performs the same update as before.



          • If you're running the development version of jq (unlikely) then the walk function can also do the job: walk(.name?="XXXX"). All the other versions will work on the latest released version, 1.5.


          • An alternative multi-update could be



            jq '(..|has("name")?) += {name: "XXXX", lname: "1234"}'


            which finds everything with a name and then sets both "name" and "lname" on each object using arithmetic update-assignment *= and the merging behaviour that + has for objects.








          share|improve this answer

































            0














            alternatively, jtc based solution:



            bash $ jtc -w'<name>l+0' -u'"XXX"' your.json 
            {
            "contact": [
            {
            "id": 111,
            "name": "XXX"
            }
            ],
            "email": "xxx",
            "group": [
            {
            "lname": "YYY",
            "name": "XXX"
            }
            ],
            "lname": "YYY",
            "name": "XXX",
            "pass": "yyy"
            }
            bash $





            share|improve this answer























              Your Answer








              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "106"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f476536%2fhow-to-find-and-replace-multiple-field-values-using-jq%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              6














              Using jq based on the walk function (needs a recent version):



              jq 'walk(.name?="XXX")' file


              If your jq doesn't support the walk function, just define it as:



              jq '
              # Apply f to composite entities recursively, and to atoms
              def walk(f):
              . as $in
              | if type == "object" then
              reduce keys as $key
              ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
              elif type == "array" then map( walk(f) ) | f
              else f
              end;
              walk(.name?="XXX")
              ' file


              Credits: https://github.com/stedolan/jq/issues/963






              share|improve this answer
























              • Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

                – user2181698
                Oct 19 '18 at 14:29













              • @user2181698 are you sure you're running that command on linux/unix?

                – qubert
                Oct 19 '18 at 14:57











              • Perhaps @user2181698 is using an unusual shell and neglected to mention it?

                – Michael Hampton
                Oct 19 '18 at 17:55
















              6














              Using jq based on the walk function (needs a recent version):



              jq 'walk(.name?="XXX")' file


              If your jq doesn't support the walk function, just define it as:



              jq '
              # Apply f to composite entities recursively, and to atoms
              def walk(f):
              . as $in
              | if type == "object" then
              reduce keys as $key
              ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
              elif type == "array" then map( walk(f) ) | f
              else f
              end;
              walk(.name?="XXX")
              ' file


              Credits: https://github.com/stedolan/jq/issues/963






              share|improve this answer
























              • Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

                – user2181698
                Oct 19 '18 at 14:29













              • @user2181698 are you sure you're running that command on linux/unix?

                – qubert
                Oct 19 '18 at 14:57











              • Perhaps @user2181698 is using an unusual shell and neglected to mention it?

                – Michael Hampton
                Oct 19 '18 at 17:55














              6












              6








              6







              Using jq based on the walk function (needs a recent version):



              jq 'walk(.name?="XXX")' file


              If your jq doesn't support the walk function, just define it as:



              jq '
              # Apply f to composite entities recursively, and to atoms
              def walk(f):
              . as $in
              | if type == "object" then
              reduce keys as $key
              ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
              elif type == "array" then map( walk(f) ) | f
              else f
              end;
              walk(.name?="XXX")
              ' file


              Credits: https://github.com/stedolan/jq/issues/963






              share|improve this answer













              Using jq based on the walk function (needs a recent version):



              jq 'walk(.name?="XXX")' file


              If your jq doesn't support the walk function, just define it as:



              jq '
              # Apply f to composite entities recursively, and to atoms
              def walk(f):
              . as $in
              | if type == "object" then
              reduce keys as $key
              ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
              elif type == "array" then map( walk(f) ) | f
              else f
              end;
              walk(.name?="XXX")
              ' file


              Credits: https://github.com/stedolan/jq/issues/963







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Oct 19 '18 at 13:02









              olivoliv

              1,651311




              1,651311













              • Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

                – user2181698
                Oct 19 '18 at 14:29













              • @user2181698 are you sure you're running that command on linux/unix?

                – qubert
                Oct 19 '18 at 14:57











              • Perhaps @user2181698 is using an unusual shell and neglected to mention it?

                – Michael Hampton
                Oct 19 '18 at 17:55



















              • Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

                – user2181698
                Oct 19 '18 at 14:29













              • @user2181698 are you sure you're running that command on linux/unix?

                – qubert
                Oct 19 '18 at 14:57











              • Perhaps @user2181698 is using an unusual shell and neglected to mention it?

                – Michael Hampton
                Oct 19 '18 at 17:55

















              Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

              – user2181698
              Oct 19 '18 at 14:29







              Hi I get the following error. error: Invalid character walk(.name?="XXX") ^

              – user2181698
              Oct 19 '18 at 14:29















              @user2181698 are you sure you're running that command on linux/unix?

              – qubert
              Oct 19 '18 at 14:57





              @user2181698 are you sure you're running that command on linux/unix?

              – qubert
              Oct 19 '18 at 14:57













              Perhaps @user2181698 is using an unusual shell and neglected to mention it?

              – Michael Hampton
              Oct 19 '18 at 17:55





              Perhaps @user2181698 is using an unusual shell and neglected to mention it?

              – Michael Hampton
              Oct 19 '18 at 17:55













              2














              jq's assignment operations can perform an update on as many locations at once as you can name and are made for this sort of situation. You can use



              jq '(.. | .name?) |= "XXXX"'


              to find every field called "name" anywhere and replace the value in each all at once with "XXXX", and output the resulting object.



              This is just the ..|.a? example from the recursive-descent documentation combined with update assignment.



              It uses the recursive descent operator .. to find every single value in the tree, then pulls out the "name" field from each of them with .name, suppresses any errors from non-matching values with ?, and then updates the object in all those places at once with "XXXX" using the update-assignment operator |=, and outputs the new object.



              This will work no matter what the file structure is and update every name field everywhere.





              Alternatively, if the file always has this structure, and it's those particular "name" fields you want to change, not just any old name, you can also just list them out and assign to them as a group as well:



              jq '(.name, .contact.name, .group.name) |= "XXXX"'


              This does the same assignment to




              1. the "name" field of the top-level object;

              2. the "name" field of every object in the "contact" array; and

              3. the "name" field of every object in the "group" array.


              all in one go. This is particularly useful if the file might have other name fields in there somewhere unrelated that you don't want to change. It finds just the three sets of locations named there and updates them all simultaneously.





              If the value is just a literal like it is here then plain assignment with = works too and saves you a character: (..|.name?)="XXXX" - you'd also want this if your value is computed based on the whole top-level object. If instead you want to compute the new name based on the old one, you need to use |=. If I'm not sure what to use, |= generally has slightly nicer behaviour in the corner cases.



              If you have multiple replacements to do, you can pipe them together:



              jq '(..|.name?) = "XXXX" | (..|.lname?) = "1234"'


              will update both the "name" and "lname" fields everywhere, and output the whole updated object once.





              A few other approaches that may work:





              • You could also be really explicit about what you're selecting with



                (..|objects|select(has("name"))).name |= "XXXX"`


                which finds everything, then just the objects, then just the objects that have a "name", then the name field on those objects, and performs the same update as before.



              • If you're running the development version of jq (unlikely) then the walk function can also do the job: walk(.name?="XXXX"). All the other versions will work on the latest released version, 1.5.


              • An alternative multi-update could be



                jq '(..|has("name")?) += {name: "XXXX", lname: "1234"}'


                which finds everything with a name and then sets both "name" and "lname" on each object using arithmetic update-assignment *= and the merging behaviour that + has for objects.








              share|improve this answer






























                2














                jq's assignment operations can perform an update on as many locations at once as you can name and are made for this sort of situation. You can use



                jq '(.. | .name?) |= "XXXX"'


                to find every field called "name" anywhere and replace the value in each all at once with "XXXX", and output the resulting object.



                This is just the ..|.a? example from the recursive-descent documentation combined with update assignment.



                It uses the recursive descent operator .. to find every single value in the tree, then pulls out the "name" field from each of them with .name, suppresses any errors from non-matching values with ?, and then updates the object in all those places at once with "XXXX" using the update-assignment operator |=, and outputs the new object.



                This will work no matter what the file structure is and update every name field everywhere.





                Alternatively, if the file always has this structure, and it's those particular "name" fields you want to change, not just any old name, you can also just list them out and assign to them as a group as well:



                jq '(.name, .contact.name, .group.name) |= "XXXX"'


                This does the same assignment to




                1. the "name" field of the top-level object;

                2. the "name" field of every object in the "contact" array; and

                3. the "name" field of every object in the "group" array.


                all in one go. This is particularly useful if the file might have other name fields in there somewhere unrelated that you don't want to change. It finds just the three sets of locations named there and updates them all simultaneously.





                If the value is just a literal like it is here then plain assignment with = works too and saves you a character: (..|.name?)="XXXX" - you'd also want this if your value is computed based on the whole top-level object. If instead you want to compute the new name based on the old one, you need to use |=. If I'm not sure what to use, |= generally has slightly nicer behaviour in the corner cases.



                If you have multiple replacements to do, you can pipe them together:



                jq '(..|.name?) = "XXXX" | (..|.lname?) = "1234"'


                will update both the "name" and "lname" fields everywhere, and output the whole updated object once.





                A few other approaches that may work:





                • You could also be really explicit about what you're selecting with



                  (..|objects|select(has("name"))).name |= "XXXX"`


                  which finds everything, then just the objects, then just the objects that have a "name", then the name field on those objects, and performs the same update as before.



                • If you're running the development version of jq (unlikely) then the walk function can also do the job: walk(.name?="XXXX"). All the other versions will work on the latest released version, 1.5.


                • An alternative multi-update could be



                  jq '(..|has("name")?) += {name: "XXXX", lname: "1234"}'


                  which finds everything with a name and then sets both "name" and "lname" on each object using arithmetic update-assignment *= and the merging behaviour that + has for objects.








                share|improve this answer




























                  2












                  2








                  2







                  jq's assignment operations can perform an update on as many locations at once as you can name and are made for this sort of situation. You can use



                  jq '(.. | .name?) |= "XXXX"'


                  to find every field called "name" anywhere and replace the value in each all at once with "XXXX", and output the resulting object.



                  This is just the ..|.a? example from the recursive-descent documentation combined with update assignment.



                  It uses the recursive descent operator .. to find every single value in the tree, then pulls out the "name" field from each of them with .name, suppresses any errors from non-matching values with ?, and then updates the object in all those places at once with "XXXX" using the update-assignment operator |=, and outputs the new object.



                  This will work no matter what the file structure is and update every name field everywhere.





                  Alternatively, if the file always has this structure, and it's those particular "name" fields you want to change, not just any old name, you can also just list them out and assign to them as a group as well:



                  jq '(.name, .contact.name, .group.name) |= "XXXX"'


                  This does the same assignment to




                  1. the "name" field of the top-level object;

                  2. the "name" field of every object in the "contact" array; and

                  3. the "name" field of every object in the "group" array.


                  all in one go. This is particularly useful if the file might have other name fields in there somewhere unrelated that you don't want to change. It finds just the three sets of locations named there and updates them all simultaneously.





                  If the value is just a literal like it is here then plain assignment with = works too and saves you a character: (..|.name?)="XXXX" - you'd also want this if your value is computed based on the whole top-level object. If instead you want to compute the new name based on the old one, you need to use |=. If I'm not sure what to use, |= generally has slightly nicer behaviour in the corner cases.



                  If you have multiple replacements to do, you can pipe them together:



                  jq '(..|.name?) = "XXXX" | (..|.lname?) = "1234"'


                  will update both the "name" and "lname" fields everywhere, and output the whole updated object once.





                  A few other approaches that may work:





                  • You could also be really explicit about what you're selecting with



                    (..|objects|select(has("name"))).name |= "XXXX"`


                    which finds everything, then just the objects, then just the objects that have a "name", then the name field on those objects, and performs the same update as before.



                  • If you're running the development version of jq (unlikely) then the walk function can also do the job: walk(.name?="XXXX"). All the other versions will work on the latest released version, 1.5.


                  • An alternative multi-update could be



                    jq '(..|has("name")?) += {name: "XXXX", lname: "1234"}'


                    which finds everything with a name and then sets both "name" and "lname" on each object using arithmetic update-assignment *= and the merging behaviour that + has for objects.








                  share|improve this answer















                  jq's assignment operations can perform an update on as many locations at once as you can name and are made for this sort of situation. You can use



                  jq '(.. | .name?) |= "XXXX"'


                  to find every field called "name" anywhere and replace the value in each all at once with "XXXX", and output the resulting object.



                  This is just the ..|.a? example from the recursive-descent documentation combined with update assignment.



                  It uses the recursive descent operator .. to find every single value in the tree, then pulls out the "name" field from each of them with .name, suppresses any errors from non-matching values with ?, and then updates the object in all those places at once with "XXXX" using the update-assignment operator |=, and outputs the new object.



                  This will work no matter what the file structure is and update every name field everywhere.





                  Alternatively, if the file always has this structure, and it's those particular "name" fields you want to change, not just any old name, you can also just list them out and assign to them as a group as well:



                  jq '(.name, .contact.name, .group.name) |= "XXXX"'


                  This does the same assignment to




                  1. the "name" field of the top-level object;

                  2. the "name" field of every object in the "contact" array; and

                  3. the "name" field of every object in the "group" array.


                  all in one go. This is particularly useful if the file might have other name fields in there somewhere unrelated that you don't want to change. It finds just the three sets of locations named there and updates them all simultaneously.





                  If the value is just a literal like it is here then plain assignment with = works too and saves you a character: (..|.name?)="XXXX" - you'd also want this if your value is computed based on the whole top-level object. If instead you want to compute the new name based on the old one, you need to use |=. If I'm not sure what to use, |= generally has slightly nicer behaviour in the corner cases.



                  If you have multiple replacements to do, you can pipe them together:



                  jq '(..|.name?) = "XXXX" | (..|.lname?) = "1234"'


                  will update both the "name" and "lname" fields everywhere, and output the whole updated object once.





                  A few other approaches that may work:





                  • You could also be really explicit about what you're selecting with



                    (..|objects|select(has("name"))).name |= "XXXX"`


                    which finds everything, then just the objects, then just the objects that have a "name", then the name field on those objects, and performs the same update as before.



                  • If you're running the development version of jq (unlikely) then the walk function can also do the job: walk(.name?="XXXX"). All the other versions will work on the latest released version, 1.5.


                  • An alternative multi-update could be



                    jq '(..|has("name")?) += {name: "XXXX", lname: "1234"}'


                    which finds everything with a name and then sets both "name" and "lname" on each object using arithmetic update-assignment *= and the merging behaviour that + has for objects.









                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Oct 20 '18 at 7:30

























                  answered Oct 20 '18 at 7:07









                  Michael HomerMichael Homer

                  46.7k8123161




                  46.7k8123161























                      0














                      alternatively, jtc based solution:



                      bash $ jtc -w'<name>l+0' -u'"XXX"' your.json 
                      {
                      "contact": [
                      {
                      "id": 111,
                      "name": "XXX"
                      }
                      ],
                      "email": "xxx",
                      "group": [
                      {
                      "lname": "YYY",
                      "name": "XXX"
                      }
                      ],
                      "lname": "YYY",
                      "name": "XXX",
                      "pass": "yyy"
                      }
                      bash $





                      share|improve this answer




























                        0














                        alternatively, jtc based solution:



                        bash $ jtc -w'<name>l+0' -u'"XXX"' your.json 
                        {
                        "contact": [
                        {
                        "id": 111,
                        "name": "XXX"
                        }
                        ],
                        "email": "xxx",
                        "group": [
                        {
                        "lname": "YYY",
                        "name": "XXX"
                        }
                        ],
                        "lname": "YYY",
                        "name": "XXX",
                        "pass": "yyy"
                        }
                        bash $





                        share|improve this answer


























                          0












                          0








                          0







                          alternatively, jtc based solution:



                          bash $ jtc -w'<name>l+0' -u'"XXX"' your.json 
                          {
                          "contact": [
                          {
                          "id": 111,
                          "name": "XXX"
                          }
                          ],
                          "email": "xxx",
                          "group": [
                          {
                          "lname": "YYY",
                          "name": "XXX"
                          }
                          ],
                          "lname": "YYY",
                          "name": "XXX",
                          "pass": "yyy"
                          }
                          bash $





                          share|improve this answer













                          alternatively, jtc based solution:



                          bash $ jtc -w'<name>l+0' -u'"XXX"' your.json 
                          {
                          "contact": [
                          {
                          "id": 111,
                          "name": "XXX"
                          }
                          ],
                          "email": "xxx",
                          "group": [
                          {
                          "lname": "YYY",
                          "name": "XXX"
                          }
                          ],
                          "lname": "YYY",
                          "name": "XXX",
                          "pass": "yyy"
                          }
                          bash $






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 9 at 18:23









                          Dmitry L.Dmitry L.

                          112




                          112






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Unix & Linux Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f476536%2fhow-to-find-and-replace-multiple-field-values-using-jq%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Morgemoulin

                              Scott Moir

                              Souastre