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

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












1















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




























    1















    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


























      1












      1








      1








      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.







      text-processing awk sed sql






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 23 at 10:29









      Jeff Schaller

      43.8k1161141




      43.8k1161141










      asked Feb 23 at 5:01









      sabarish jacksonsabarish jackson

      144212




      144212




















          3 Answers
          3






          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.

            – Prvt_Yadv
            Feb 23 at 5:45











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

            – l0b0
            Feb 23 at 5:47











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

            – Prvt_Yadv
            Feb 23 at 5:54











          • @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
            Feb 23 at 5:59











          • @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
            Feb 23 at 6:04


















          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






























            0














            You may follow the approach (bash shell)



            First create appropriately named variables, generated variables, and their shuffled counterparts.



            Then run the sed command.



            num=`LC_ALL=C printf '%s' 0..9`
            A2Z=`LC_ALL=C printf '%s' A..Z`
            a2z=`LC_ALL=C printf '%s' a..z`

            alpha=$A2Z$a2z
            alnum=$alpha$num

            num_shuf=`echo "$num" | fold -w 1 | shuf | tr -d "n"`
            alpha_shuf=`echo "$alpha" | fold -w 1 | shuf | tr -d "n"`
            alnum_shuf=`echo "$alnum" | fold -w 1 | shuf | tr -d "n"`

            sed -e "
            /TRANSLATE/! b

            # numeric
            /,'$num',/ s/'[^']*'/,'$num_shuf'/2

            # alphabetic
            /,'$alpha',/ s/,'[^']*'/,'$alpha_shuf'/2

            # alphanumeric
            /,'$alnum',/ s/,'[^']*'/,'$alnum_shuf'/2
            " input.sql





            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%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

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              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.

                – Prvt_Yadv
                Feb 23 at 5:45











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

                – l0b0
                Feb 23 at 5:47











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

                – Prvt_Yadv
                Feb 23 at 5:54











              • @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
                Feb 23 at 5:59











              • @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
                Feb 23 at 6:04















              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.

                – Prvt_Yadv
                Feb 23 at 5:45











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

                – l0b0
                Feb 23 at 5:47











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

                – Prvt_Yadv
                Feb 23 at 5:54











              • @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
                Feb 23 at 5:59











              • @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
                Feb 23 at 6:04













              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 Feb 23 at 5:42









              l0b0l0b0

              28.6k19121248




              28.6k19121248












              • May be possible first part is not static.

                – Prvt_Yadv
                Feb 23 at 5:45











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

                – l0b0
                Feb 23 at 5:47











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

                – Prvt_Yadv
                Feb 23 at 5:54











              • @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
                Feb 23 at 5:59











              • @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
                Feb 23 at 6:04

















              • May be possible first part is not static.

                – Prvt_Yadv
                Feb 23 at 5:45











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

                – l0b0
                Feb 23 at 5:47











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

                – Prvt_Yadv
                Feb 23 at 5:54











              • @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
                Feb 23 at 5:59











              • @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
                Feb 23 at 6:04
















              May be possible first part is not static.

              – Prvt_Yadv
              Feb 23 at 5:45





              May be possible first part is not static.

              – Prvt_Yadv
              Feb 23 at 5:45













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

              – l0b0
              Feb 23 at 5:47





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

              – l0b0
              Feb 23 at 5:47













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

              – Prvt_Yadv
              Feb 23 at 5:54





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

              – Prvt_Yadv
              Feb 23 at 5:54













              @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
              Feb 23 at 5:59





              @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
              Feb 23 at 5:59













              @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
              Feb 23 at 6:04





              @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
              Feb 23 at 6:04













              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



























                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

























                  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













                  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












                  share|improve this answer



                  share|improve this answer










                  answered Feb 23 at 5:59









                  mcintmcint

                  11




                  11





















                      0














                      You may follow the approach (bash shell)



                      First create appropriately named variables, generated variables, and their shuffled counterparts.



                      Then run the sed command.



                      num=`LC_ALL=C printf '%s' 0..9`
                      A2Z=`LC_ALL=C printf '%s' A..Z`
                      a2z=`LC_ALL=C printf '%s' a..z`

                      alpha=$A2Z$a2z
                      alnum=$alpha$num

                      num_shuf=`echo "$num" | fold -w 1 | shuf | tr -d "n"`
                      alpha_shuf=`echo "$alpha" | fold -w 1 | shuf | tr -d "n"`
                      alnum_shuf=`echo "$alnum" | fold -w 1 | shuf | tr -d "n"`

                      sed -e "
                      /TRANSLATE/! b

                      # numeric
                      /,'$num',/ s/'[^']*'/,'$num_shuf'/2

                      # alphabetic
                      /,'$alpha',/ s/,'[^']*'/,'$alpha_shuf'/2

                      # alphanumeric
                      /,'$alnum',/ s/,'[^']*'/,'$alnum_shuf'/2
                      " input.sql





                      share|improve this answer



























                        0














                        You may follow the approach (bash shell)



                        First create appropriately named variables, generated variables, and their shuffled counterparts.



                        Then run the sed command.



                        num=`LC_ALL=C printf '%s' 0..9`
                        A2Z=`LC_ALL=C printf '%s' A..Z`
                        a2z=`LC_ALL=C printf '%s' a..z`

                        alpha=$A2Z$a2z
                        alnum=$alpha$num

                        num_shuf=`echo "$num" | fold -w 1 | shuf | tr -d "n"`
                        alpha_shuf=`echo "$alpha" | fold -w 1 | shuf | tr -d "n"`
                        alnum_shuf=`echo "$alnum" | fold -w 1 | shuf | tr -d "n"`

                        sed -e "
                        /TRANSLATE/! b

                        # numeric
                        /,'$num',/ s/'[^']*'/,'$num_shuf'/2

                        # alphabetic
                        /,'$alpha',/ s/,'[^']*'/,'$alpha_shuf'/2

                        # alphanumeric
                        /,'$alnum',/ s/,'[^']*'/,'$alnum_shuf'/2
                        " input.sql





                        share|improve this answer

























                          0












                          0








                          0







                          You may follow the approach (bash shell)



                          First create appropriately named variables, generated variables, and their shuffled counterparts.



                          Then run the sed command.



                          num=`LC_ALL=C printf '%s' 0..9`
                          A2Z=`LC_ALL=C printf '%s' A..Z`
                          a2z=`LC_ALL=C printf '%s' a..z`

                          alpha=$A2Z$a2z
                          alnum=$alpha$num

                          num_shuf=`echo "$num" | fold -w 1 | shuf | tr -d "n"`
                          alpha_shuf=`echo "$alpha" | fold -w 1 | shuf | tr -d "n"`
                          alnum_shuf=`echo "$alnum" | fold -w 1 | shuf | tr -d "n"`

                          sed -e "
                          /TRANSLATE/! b

                          # numeric
                          /,'$num',/ s/'[^']*'/,'$num_shuf'/2

                          # alphabetic
                          /,'$alpha',/ s/,'[^']*'/,'$alpha_shuf'/2

                          # alphanumeric
                          /,'$alnum',/ s/,'[^']*'/,'$alnum_shuf'/2
                          " input.sql





                          share|improve this answer













                          You may follow the approach (bash shell)



                          First create appropriately named variables, generated variables, and their shuffled counterparts.



                          Then run the sed command.



                          num=`LC_ALL=C printf '%s' 0..9`
                          A2Z=`LC_ALL=C printf '%s' A..Z`
                          a2z=`LC_ALL=C printf '%s' a..z`

                          alpha=$A2Z$a2z
                          alnum=$alpha$num

                          num_shuf=`echo "$num" | fold -w 1 | shuf | tr -d "n"`
                          alpha_shuf=`echo "$alpha" | fold -w 1 | shuf | tr -d "n"`
                          alnum_shuf=`echo "$alnum" | fold -w 1 | shuf | tr -d "n"`

                          sed -e "
                          /TRANSLATE/! b

                          # numeric
                          /,'$num',/ s/'[^']*'/,'$num_shuf'/2

                          # alphabetic
                          /,'$alpha',/ s/,'[^']*'/,'$alpha_shuf'/2

                          # alphanumeric
                          /,'$alnum',/ s/,'[^']*'/,'$alnum_shuf'/2
                          " input.sql






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Feb 23 at 15:15









                          Rakesh SharmaRakesh Sharma

                          342115




                          342115



























                              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

                              How to check contact read email or not when send email to Individual?

                              Bahrain

                              Postfix configuration issue with fips on centos 7; mailgun relay