Search for a dynamic pattern in a file in a file and replace it with variables












0















I have written the below commands that will generate three different shuffled vales



 A=`echo 'abcdefghijklmnopqrstuvwxyz' | sed 's/./&n/g' | shuf | tr -d "n"`
B=`echo 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | sed 's/./&n/g' | shuf | tr -d "n"`
C=`echo '123456789' | sed 's/./&n/g' | shuf | tr -d "n"`

$ echo $A$B$C
zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA729314856

$ echo $C
729314856

$ echo $A$B
zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA


One is Alpha numeric, one is numbers and one is alphabets.



I also have a package.sql file which has below patterns.



grep TRANSLATE package.sql
RETURN TRANSLATE(p1_value,'0123456789', '0875642139');
RETURN TRANSLATE(p2_value,'0123456789', '0875642139');
RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg');
RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139');


A brief about the above output is, First Part of TRANSALTE lines should remain as it is. (i.e) value in (single quotes)after p*_value will be static and it shouldn't be changed, whereas the value in (Single Quotes) after that static value will be dynamic in all the occurences of that TRANSLATE line. I need to change that dynamic part with the Shuffled values I get every time (i.e) with the output of $A$B$C or $A$B or $C.



That values needs to replaced in that package.sql file.










share|improve this question





























    0















    I have written the below commands that will generate three different shuffled vales



     A=`echo 'abcdefghijklmnopqrstuvwxyz' | sed 's/./&n/g' | shuf | tr -d "n"`
    B=`echo 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | sed 's/./&n/g' | shuf | tr -d "n"`
    C=`echo '123456789' | sed 's/./&n/g' | shuf | tr -d "n"`

    $ echo $A$B$C
    zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA729314856

    $ echo $C
    729314856

    $ echo $A$B
    zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA


    One is Alpha numeric, one is numbers and one is alphabets.



    I also have a package.sql file which has below patterns.



    grep TRANSLATE package.sql
    RETURN TRANSLATE(p1_value,'0123456789', '0875642139');
    RETURN TRANSLATE(p2_value,'0123456789', '0875642139');
    RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg');
    RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139');


    A brief about the above output is, First Part of TRANSALTE lines should remain as it is. (i.e) value in (single quotes)after p*_value will be static and it shouldn't be changed, whereas the value in (Single Quotes) after that static value will be dynamic in all the occurences of that TRANSLATE line. I need to change that dynamic part with the Shuffled values I get every time (i.e) with the output of $A$B$C or $A$B or $C.



    That values needs to replaced in that package.sql file.










    share|improve this question



























      0












      0








      0








      I have written the below commands that will generate three different shuffled vales



       A=`echo 'abcdefghijklmnopqrstuvwxyz' | sed 's/./&n/g' | shuf | tr -d "n"`
      B=`echo 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | sed 's/./&n/g' | shuf | tr -d "n"`
      C=`echo '123456789' | sed 's/./&n/g' | shuf | tr -d "n"`

      $ echo $A$B$C
      zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA729314856

      $ echo $C
      729314856

      $ echo $A$B
      zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA


      One is Alpha numeric, one is numbers and one is alphabets.



      I also have a package.sql file which has below patterns.



      grep TRANSLATE package.sql
      RETURN TRANSLATE(p1_value,'0123456789', '0875642139');
      RETURN TRANSLATE(p2_value,'0123456789', '0875642139');
      RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg');
      RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139');


      A brief about the above output is, First Part of TRANSALTE lines should remain as it is. (i.e) value in (single quotes)after p*_value will be static and it shouldn't be changed, whereas the value in (Single Quotes) after that static value will be dynamic in all the occurences of that TRANSLATE line. I need to change that dynamic part with the Shuffled values I get every time (i.e) with the output of $A$B$C or $A$B or $C.



      That values needs to replaced in that package.sql file.










      share|improve this question
















      I have written the below commands that will generate three different shuffled vales



       A=`echo 'abcdefghijklmnopqrstuvwxyz' | sed 's/./&n/g' | shuf | tr -d "n"`
      B=`echo 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | sed 's/./&n/g' | shuf | tr -d "n"`
      C=`echo '123456789' | sed 's/./&n/g' | shuf | tr -d "n"`

      $ echo $A$B$C
      zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA729314856

      $ echo $C
      729314856

      $ echo $A$B
      zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA


      One is Alpha numeric, one is numbers and one is alphabets.



      I also have a package.sql file which has below patterns.



      grep TRANSLATE package.sql
      RETURN TRANSLATE(p1_value,'0123456789', '0875642139');
      RETURN TRANSLATE(p2_value,'0123456789', '0875642139');
      RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg');
      RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139');


      A brief about the above output is, First Part of TRANSALTE lines should remain as it is. (i.e) value in (single quotes)after p*_value will be static and it shouldn't be changed, whereas the value in (Single Quotes) after that static value will be dynamic in all the occurences of that TRANSLATE line. I need to change that dynamic part with the Shuffled values I get every time (i.e) with the output of $A$B$C or $A$B or $C.



      That values needs to replaced in that package.sql file.







      bash shell-script awk sed grep






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 2 mins ago









      Rui F Ribeiro

      40.4k1479137




      40.4k1479137










      asked 2 hours ago









      sabarish jacksonsabarish jackson

      139212




      139212






















          2 Answers
          2






          active

          oldest

          votes


















          0














          If and only if the values are actually alphanumeric and the occurrences of these strings should all be replaced in the file this should work (untested):



          sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql





          share|improve this answer
























          • May be possible first part is not static.

            – PRY
            1 hour ago











          • Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

            – l0b0
            1 hour ago











          • It's not my question just a comment that it is unclear.

            – PRY
            1 hour ago











          • @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

            – sabarish jackson
            1 hour ago











          • @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

            – sabarish jackson
            1 hour ago



















          0














          grep TRANSLATE p.sql
          | sed -E 's_translate("(.*)","(.*)");_"s/1/2/"_'
          # e.g. match the line, and create a sed replacement "s/012/210/"
          | xargs -I% sed -i -e "%" file


          I think the key thing you need to use is regex grouping.



          You can be very specific about what you match, and then include most of it in the output by reference.



          sed 's#(common_str[(][keep class 0-9]+",")[replace class]+#1replacement str#'



          sed 's#
          (common_str[(][keep class 0-9]+",")[replace class]+
          #
          1replacement str
          #'`





          share|improve this answer








          New contributor




          mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




















            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%2f502453%2fsearch-for-a-dynamic-pattern-in-a-file-in-a-file-and-replace-it-with-variables%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            If and only if the values are actually alphanumeric and the occurrences of these strings should all be replaced in the file this should work (untested):



            sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql





            share|improve this answer
























            • May be possible first part is not static.

              – PRY
              1 hour ago











            • Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

              – l0b0
              1 hour ago











            • It's not my question just a comment that it is unclear.

              – PRY
              1 hour ago











            • @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

              – sabarish jackson
              1 hour ago











            • @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

              – sabarish jackson
              1 hour ago
















            0














            If and only if the values are actually alphanumeric and the occurrences of these strings should all be replaced in the file this should work (untested):



            sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql





            share|improve this answer
























            • May be possible first part is not static.

              – PRY
              1 hour ago











            • Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

              – l0b0
              1 hour ago











            • It's not my question just a comment that it is unclear.

              – PRY
              1 hour ago











            • @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

              – sabarish jackson
              1 hour ago











            • @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

              – sabarish jackson
              1 hour ago














            0












            0








            0







            If and only if the values are actually alphanumeric and the occurrences of these strings should all be replaced in the file this should work (untested):



            sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql





            share|improve this answer













            If and only if the values are actually alphanumeric and the occurrences of these strings should all be replaced in the file this should work (untested):



            sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 1 hour ago









            l0b0l0b0

            28.3k18119246




            28.3k18119246













            • May be possible first part is not static.

              – PRY
              1 hour ago











            • Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

              – l0b0
              1 hour ago











            • It's not my question just a comment that it is unclear.

              – PRY
              1 hour ago











            • @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

              – sabarish jackson
              1 hour ago











            • @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

              – sabarish jackson
              1 hour ago



















            • May be possible first part is not static.

              – PRY
              1 hour ago











            • Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

              – l0b0
              1 hour ago











            • It's not my question just a comment that it is unclear.

              – PRY
              1 hour ago











            • @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

              – sabarish jackson
              1 hour ago











            • @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

              – sabarish jackson
              1 hour ago

















            May be possible first part is not static.

            – PRY
            1 hour ago





            May be possible first part is not static.

            – PRY
            1 hour ago













            Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

            – l0b0
            1 hour ago





            Please update your question to include this. It makes a big difference to the implementation if you mean what I think you mean.

            – l0b0
            1 hour ago













            It's not my question just a comment that it is unclear.

            – PRY
            1 hour ago





            It's not my question just a comment that it is unclear.

            – PRY
            1 hour ago













            @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

            – sabarish jackson
            1 hour ago





            @10b0 The command which you have given will work if those values are static, But assume, we have changed it now with shuffled values using your SED command. for the next execution the values wont be same right? So It will fail for the second execution,

            – sabarish jackson
            1 hour ago













            @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

            – sabarish jackson
            1 hour ago





            @PRY First Part of Alphanumricals or whatever is static (i.e) value after p*_value will be static and value in (Single Quotes) after that static value will be dynamic. in the below patterns. RETURN TRANSLATE(p1_value,'0123456789', '0875642139'); RETURN TRANSLATE(p2_value,'0123456789', '0875642139'); RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg'); RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678

            – sabarish jackson
            1 hour ago













            0














            grep TRANSLATE p.sql
            | sed -E 's_translate("(.*)","(.*)");_"s/1/2/"_'
            # e.g. match the line, and create a sed replacement "s/012/210/"
            | xargs -I% sed -i -e "%" file


            I think the key thing you need to use is regex grouping.



            You can be very specific about what you match, and then include most of it in the output by reference.



            sed 's#(common_str[(][keep class 0-9]+",")[replace class]+#1replacement str#'



            sed 's#
            (common_str[(][keep class 0-9]+",")[replace class]+
            #
            1replacement str
            #'`





            share|improve this answer








            New contributor




            mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.

























              0














              grep TRANSLATE p.sql
              | sed -E 's_translate("(.*)","(.*)");_"s/1/2/"_'
              # e.g. match the line, and create a sed replacement "s/012/210/"
              | xargs -I% sed -i -e "%" file


              I think the key thing you need to use is regex grouping.



              You can be very specific about what you match, and then include most of it in the output by reference.



              sed 's#(common_str[(][keep class 0-9]+",")[replace class]+#1replacement str#'



              sed 's#
              (common_str[(][keep class 0-9]+",")[replace class]+
              #
              1replacement str
              #'`





              share|improve this answer








              New contributor




              mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.























                0












                0








                0







                grep TRANSLATE p.sql
                | sed -E 's_translate("(.*)","(.*)");_"s/1/2/"_'
                # e.g. match the line, and create a sed replacement "s/012/210/"
                | xargs -I% sed -i -e "%" file


                I think the key thing you need to use is regex grouping.



                You can be very specific about what you match, and then include most of it in the output by reference.



                sed 's#(common_str[(][keep class 0-9]+",")[replace class]+#1replacement str#'



                sed 's#
                (common_str[(][keep class 0-9]+",")[replace class]+
                #
                1replacement str
                #'`





                share|improve this answer








                New contributor




                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.










                grep TRANSLATE p.sql
                | sed -E 's_translate("(.*)","(.*)");_"s/1/2/"_'
                # e.g. match the line, and create a sed replacement "s/012/210/"
                | xargs -I% sed -i -e "%" file


                I think the key thing you need to use is regex grouping.



                You can be very specific about what you match, and then include most of it in the output by reference.



                sed 's#(common_str[(][keep class 0-9]+",")[replace class]+#1replacement str#'



                sed 's#
                (common_str[(][keep class 0-9]+",")[replace class]+
                #
                1replacement str
                #'`






                share|improve this answer








                New contributor




                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                share|improve this answer



                share|improve this answer






                New contributor




                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                answered 1 hour ago









                mcintmcint

                11




                11




                New contributor




                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.





                New contributor





                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






                mcint is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






























                    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%2f502453%2fsearch-for-a-dynamic-pattern-in-a-file-in-a-file-and-replace-it-with-variables%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

                    Accessing regular linux commands in Huawei's Dopra Linux

                    Can't connect RFCOMM socket: Host is down

                    Kernel panic - not syncing: Fatal Exception in Interrupt