How to swap strings in all lines?












3















Emacs 26.1



I have this text:



"ADA-SGD"
"ADT-SGD"
"ADX-SGD"
"AID-SGD"
"AMP-SGD"
"ANT-SGD"
"ARDR-SGD"
"ARK-SGD"


I want to swap text in all these lines. The result must be like this:



"SGD-ADA"
"SGD-ADT"
"SGD-ADX"
"SGD-AID"
"SGD-AMP"
"SGD-ANT"
"SGD-ARDR"
"SGD-ARK"


How I can do this?



Thanks.










share|improve this question





























    3















    Emacs 26.1



    I have this text:



    "ADA-SGD"
    "ADT-SGD"
    "ADX-SGD"
    "AID-SGD"
    "AMP-SGD"
    "ANT-SGD"
    "ARDR-SGD"
    "ARK-SGD"


    I want to swap text in all these lines. The result must be like this:



    "SGD-ADA"
    "SGD-ADT"
    "SGD-ADX"
    "SGD-AID"
    "SGD-AMP"
    "SGD-ANT"
    "SGD-ARDR"
    "SGD-ARK"


    How I can do this?



    Thanks.










    share|improve this question



























      3












      3








      3








      Emacs 26.1



      I have this text:



      "ADA-SGD"
      "ADT-SGD"
      "ADX-SGD"
      "AID-SGD"
      "AMP-SGD"
      "ANT-SGD"
      "ARDR-SGD"
      "ARK-SGD"


      I want to swap text in all these lines. The result must be like this:



      "SGD-ADA"
      "SGD-ADT"
      "SGD-ADX"
      "SGD-AID"
      "SGD-AMP"
      "SGD-ANT"
      "SGD-ARDR"
      "SGD-ARK"


      How I can do this?



      Thanks.










      share|improve this question
















      Emacs 26.1



      I have this text:



      "ADA-SGD"
      "ADT-SGD"
      "ADX-SGD"
      "AID-SGD"
      "AMP-SGD"
      "ANT-SGD"
      "ARDR-SGD"
      "ARK-SGD"


      I want to swap text in all these lines. The result must be like this:



      "SGD-ADA"
      "SGD-ADT"
      "SGD-ADX"
      "SGD-AID"
      "SGD-AMP"
      "SGD-ANT"
      "SGD-ARDR"
      "SGD-ARK"


      How I can do this?



      Thanks.







      text-editing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 2 days ago









      Heikki

      1,444516




      1,444516










      asked 2 days ago









      AlexeiAlexei

      600211




      600211






















          5 Answers
          5






          active

          oldest

          votes


















          3














          Another option: using Multiple Cursors you can do it with three commands!



          Starting with point (the cursor) on the first hyphen -:




          1. Mark the hyphen with Shift right-arrow or C-space C-f

          2. Mark all hyphens with M-x mc/mark-all-like-this or C-c C-<

          3. Transpose words with M-x transpose-words or M-t






          share|improve this answer































            5














            You can do it with C-M-% (running query-replace-regexp): Give it the string "([A-Z]+)-([A-Z]+)" (quotes included) for the text to replace, and "2-1" for the replacement.






            share|improve this answer































              4














              I personally think the query-replace-regexp solution is better, but just for fun here is another solution with macros:



              ;; Move cursor to start of first line
              <f3> ;; kmacro-start-macro-or-insert-counter
              M-f ;; forward-word
              M-t ;; transpose-words
              C-n ;; next-line
              C-a ;; move-beginning-of-line
              <f4> ;; kmacro-end-or-call-macro
              ;; Select remaining lines
              C-x C-k r ;; apply-macro-to-region-lines





              share|improve this answer
























              • Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                – DoMiNeLa10
                5 hours ago



















              3














              You can simply use query-replace-regexp (default key C-M-%) for this.
              search pattern would be something like



              "(.*)-(SGD)"


              and the replacement would look like this then



              "2-1"


              replace-regexp is great for such things, check the emacs wiki for mor information about that
              emacs regexp






              share|improve this answer








              New contributor




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




























                2














                Regexps are an overkill in this case since emacs has a built-in command transpose-words that is bound to M-t by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.



                https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html



                Learn to use keyboard macros and you can solve most repetative text editing tasks.



                Place the cursor before the first line, start recording the keyboard macro, press C-s and - to move the cursor to the next hyphen, press M-t to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.






                share|improve this answer
























                • See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                  – phils
                  2 days ago











                Your Answer








                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "583"
                };
                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%2femacs.stackexchange.com%2fquestions%2f47005%2fhow-to-swap-strings-in-all-lines%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                5 Answers
                5






                active

                oldest

                votes








                5 Answers
                5






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                3














                Another option: using Multiple Cursors you can do it with three commands!



                Starting with point (the cursor) on the first hyphen -:




                1. Mark the hyphen with Shift right-arrow or C-space C-f

                2. Mark all hyphens with M-x mc/mark-all-like-this or C-c C-<

                3. Transpose words with M-x transpose-words or M-t






                share|improve this answer




























                  3














                  Another option: using Multiple Cursors you can do it with three commands!



                  Starting with point (the cursor) on the first hyphen -:




                  1. Mark the hyphen with Shift right-arrow or C-space C-f

                  2. Mark all hyphens with M-x mc/mark-all-like-this or C-c C-<

                  3. Transpose words with M-x transpose-words or M-t






                  share|improve this answer


























                    3












                    3








                    3







                    Another option: using Multiple Cursors you can do it with three commands!



                    Starting with point (the cursor) on the first hyphen -:




                    1. Mark the hyphen with Shift right-arrow or C-space C-f

                    2. Mark all hyphens with M-x mc/mark-all-like-this or C-c C-<

                    3. Transpose words with M-x transpose-words or M-t






                    share|improve this answer













                    Another option: using Multiple Cursors you can do it with three commands!



                    Starting with point (the cursor) on the first hyphen -:




                    1. Mark the hyphen with Shift right-arrow or C-space C-f

                    2. Mark all hyphens with M-x mc/mark-all-like-this or C-c C-<

                    3. Transpose words with M-x transpose-words or M-t







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 2 days ago









                    TylerTyler

                    11.4k12049




                    11.4k12049























                        5














                        You can do it with C-M-% (running query-replace-regexp): Give it the string "([A-Z]+)-([A-Z]+)" (quotes included) for the text to replace, and "2-1" for the replacement.






                        share|improve this answer




























                          5














                          You can do it with C-M-% (running query-replace-regexp): Give it the string "([A-Z]+)-([A-Z]+)" (quotes included) for the text to replace, and "2-1" for the replacement.






                          share|improve this answer


























                            5












                            5








                            5







                            You can do it with C-M-% (running query-replace-regexp): Give it the string "([A-Z]+)-([A-Z]+)" (quotes included) for the text to replace, and "2-1" for the replacement.






                            share|improve this answer













                            You can do it with C-M-% (running query-replace-regexp): Give it the string "([A-Z]+)-([A-Z]+)" (quotes included) for the text to replace, and "2-1" for the replacement.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 2 days ago









                            Harald Hanche-OlsenHarald Hanche-Olsen

                            1,806610




                            1,806610























                                4














                                I personally think the query-replace-regexp solution is better, but just for fun here is another solution with macros:



                                ;; Move cursor to start of first line
                                <f3> ;; kmacro-start-macro-or-insert-counter
                                M-f ;; forward-word
                                M-t ;; transpose-words
                                C-n ;; next-line
                                C-a ;; move-beginning-of-line
                                <f4> ;; kmacro-end-or-call-macro
                                ;; Select remaining lines
                                C-x C-k r ;; apply-macro-to-region-lines





                                share|improve this answer
























                                • Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                  – DoMiNeLa10
                                  5 hours ago
















                                4














                                I personally think the query-replace-regexp solution is better, but just for fun here is another solution with macros:



                                ;; Move cursor to start of first line
                                <f3> ;; kmacro-start-macro-or-insert-counter
                                M-f ;; forward-word
                                M-t ;; transpose-words
                                C-n ;; next-line
                                C-a ;; move-beginning-of-line
                                <f4> ;; kmacro-end-or-call-macro
                                ;; Select remaining lines
                                C-x C-k r ;; apply-macro-to-region-lines





                                share|improve this answer
























                                • Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                  – DoMiNeLa10
                                  5 hours ago














                                4












                                4








                                4







                                I personally think the query-replace-regexp solution is better, but just for fun here is another solution with macros:



                                ;; Move cursor to start of first line
                                <f3> ;; kmacro-start-macro-or-insert-counter
                                M-f ;; forward-word
                                M-t ;; transpose-words
                                C-n ;; next-line
                                C-a ;; move-beginning-of-line
                                <f4> ;; kmacro-end-or-call-macro
                                ;; Select remaining lines
                                C-x C-k r ;; apply-macro-to-region-lines





                                share|improve this answer













                                I personally think the query-replace-regexp solution is better, but just for fun here is another solution with macros:



                                ;; Move cursor to start of first line
                                <f3> ;; kmacro-start-macro-or-insert-counter
                                M-f ;; forward-word
                                M-t ;; transpose-words
                                C-n ;; next-line
                                C-a ;; move-beginning-of-line
                                <f4> ;; kmacro-end-or-call-macro
                                ;; Select remaining lines
                                C-x C-k r ;; apply-macro-to-region-lines






                                share|improve this answer












                                share|improve this answer



                                share|improve this answer










                                answered 2 days ago









                                0x54530x5453

                                1563




                                1563













                                • Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                  – DoMiNeLa10
                                  5 hours ago



















                                • Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                  – DoMiNeLa10
                                  5 hours ago

















                                Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                – DoMiNeLa10
                                5 hours ago





                                Executing your macro with numeric argument 0 should also work as intended, as going past the last line in a buffer errors out and terminates execution.

                                – DoMiNeLa10
                                5 hours ago











                                3














                                You can simply use query-replace-regexp (default key C-M-%) for this.
                                search pattern would be something like



                                "(.*)-(SGD)"


                                and the replacement would look like this then



                                "2-1"


                                replace-regexp is great for such things, check the emacs wiki for mor information about that
                                emacs regexp






                                share|improve this answer








                                New contributor




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

























                                  3














                                  You can simply use query-replace-regexp (default key C-M-%) for this.
                                  search pattern would be something like



                                  "(.*)-(SGD)"


                                  and the replacement would look like this then



                                  "2-1"


                                  replace-regexp is great for such things, check the emacs wiki for mor information about that
                                  emacs regexp






                                  share|improve this answer








                                  New contributor




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























                                    3












                                    3








                                    3







                                    You can simply use query-replace-regexp (default key C-M-%) for this.
                                    search pattern would be something like



                                    "(.*)-(SGD)"


                                    and the replacement would look like this then



                                    "2-1"


                                    replace-regexp is great for such things, check the emacs wiki for mor information about that
                                    emacs regexp






                                    share|improve this answer








                                    New contributor




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










                                    You can simply use query-replace-regexp (default key C-M-%) for this.
                                    search pattern would be something like



                                    "(.*)-(SGD)"


                                    and the replacement would look like this then



                                    "2-1"


                                    replace-regexp is great for such things, check the emacs wiki for mor information about that
                                    emacs regexp







                                    share|improve this answer








                                    New contributor




                                    AltruisticDelay 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




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









                                    answered 2 days ago









                                    AltruisticDelayAltruisticDelay

                                    311




                                    311




                                    New contributor




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





                                    New contributor





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






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























                                        2














                                        Regexps are an overkill in this case since emacs has a built-in command transpose-words that is bound to M-t by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.



                                        https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html



                                        Learn to use keyboard macros and you can solve most repetative text editing tasks.



                                        Place the cursor before the first line, start recording the keyboard macro, press C-s and - to move the cursor to the next hyphen, press M-t to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.






                                        share|improve this answer
























                                        • See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                          – phils
                                          2 days ago
















                                        2














                                        Regexps are an overkill in this case since emacs has a built-in command transpose-words that is bound to M-t by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.



                                        https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html



                                        Learn to use keyboard macros and you can solve most repetative text editing tasks.



                                        Place the cursor before the first line, start recording the keyboard macro, press C-s and - to move the cursor to the next hyphen, press M-t to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.






                                        share|improve this answer
























                                        • See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                          – phils
                                          2 days ago














                                        2












                                        2








                                        2







                                        Regexps are an overkill in this case since emacs has a built-in command transpose-words that is bound to M-t by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.



                                        https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html



                                        Learn to use keyboard macros and you can solve most repetative text editing tasks.



                                        Place the cursor before the first line, start recording the keyboard macro, press C-s and - to move the cursor to the next hyphen, press M-t to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.






                                        share|improve this answer













                                        Regexps are an overkill in this case since emacs has a built-in command transpose-words that is bound to M-t by default. This command, combined with isearch are enough to solve the problem when linked together with emacs keyboard macros.



                                        https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html



                                        Learn to use keyboard macros and you can solve most repetative text editing tasks.



                                        Place the cursor before the first line, start recording the keyboard macro, press C-s and - to move the cursor to the next hyphen, press M-t to transpose the words, stop recording. Then repeat the macro as many times as needed. Alternatively, you can apply the macro to a region of lines.







                                        share|improve this answer












                                        share|improve this answer



                                        share|improve this answer










                                        answered 2 days ago









                                        HeikkiHeikki

                                        1,444516




                                        1,444516













                                        • See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                          – phils
                                          2 days ago



















                                        • See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                          – phils
                                          2 days ago

















                                        See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                        – phils
                                        2 days ago





                                        See also @0x5453's answer, which likewise used transpose-words in a keyboard macro.

                                        – phils
                                        2 days ago


















                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Emacs 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%2femacs.stackexchange.com%2fquestions%2f47005%2fhow-to-swap-strings-in-all-lines%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

                                        An IMO inspired problem

                                        Management

                                        Investment