Awk - replace one character only in a certain column












7














I have a file like this:



2018.01.02;1.5;comment 1
2018.01.04;2.75;comment 2
2018.01.07;5.25;comment 4
2018.01.09;1.25;comment 7


I want to replace all dots . in the second column with a comma , as I would with sed 's/./,/g' file how can I use sed or preferably awk to only apply this for the second column, so my output would look like this:



2018.01.02;1,5;comment 1
2018.01.04;2,75;comment 2
2018.01.07;5,25;comment 4
2018.01.09;1,25;comment 7









share|improve this question



























    7














    I have a file like this:



    2018.01.02;1.5;comment 1
    2018.01.04;2.75;comment 2
    2018.01.07;5.25;comment 4
    2018.01.09;1.25;comment 7


    I want to replace all dots . in the second column with a comma , as I would with sed 's/./,/g' file how can I use sed or preferably awk to only apply this for the second column, so my output would look like this:



    2018.01.02;1,5;comment 1
    2018.01.04;2,75;comment 2
    2018.01.07;5,25;comment 4
    2018.01.09;1,25;comment 7









    share|improve this question

























      7












      7








      7







      I have a file like this:



      2018.01.02;1.5;comment 1
      2018.01.04;2.75;comment 2
      2018.01.07;5.25;comment 4
      2018.01.09;1.25;comment 7


      I want to replace all dots . in the second column with a comma , as I would with sed 's/./,/g' file how can I use sed or preferably awk to only apply this for the second column, so my output would look like this:



      2018.01.02;1,5;comment 1
      2018.01.04;2,75;comment 2
      2018.01.07;5,25;comment 4
      2018.01.09;1,25;comment 7









      share|improve this question













      I have a file like this:



      2018.01.02;1.5;comment 1
      2018.01.04;2.75;comment 2
      2018.01.07;5.25;comment 4
      2018.01.09;1.25;comment 7


      I want to replace all dots . in the second column with a comma , as I would with sed 's/./,/g' file how can I use sed or preferably awk to only apply this for the second column, so my output would look like this:



      2018.01.02;1,5;comment 1
      2018.01.04;2,75;comment 2
      2018.01.07;5,25;comment 4
      2018.01.09;1,25;comment 7






      text-processing awk sed






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked yesterday









      nath

      917525




      917525






















          3 Answers
          3






          active

          oldest

          votes


















          14














          $ awk 'BEGIN{FS=OFS=";"} {gsub(/./, ",", $2)} 1' ip.txt
          2018.01.02;1,5;comment 1
          2018.01.04;2,75;comment 2
          2018.01.07;5,25;comment 4
          2018.01.09;1,25;comment 7




          • BEGIN{} this block of code will be executed before processing any input line


          • FS=OFS=";" set input and output field separator as ;


          • gsub(/./, ",", $2) for each input line, replace all the . in 2nd field with ,


          • 1 is an awk idiom to print contents of $0 (which contains the input record)






          share|improve this answer



















          • 1




            awesome, much THX!
            – nath
            yesterday



















          7














          sed 's/./,/3' file


          replace the third occurence of the dot






          share|improve this answer



















          • 1




            Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
            – twalberg
            yesterday










          • I took into account the observations
            – Emilio Galarraga
            yesterday










          • cat would not necessarily be useless here. It would allow the operation to use 2 cores.
            – ron rothman ℝℝ
            yesterday



















          4














          Done by below method using awk



          Command: awk -F ";" '{gsub(/./,",",$2);print $1";"$2";"$3}' filename



          output



          2018.01.02;1,5;comment 1
          2018.01.04;2,75;comment 2
          2018.01.07;5,25;comment 4
          2018.01.09;1,25;comment 7





          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%2f492500%2fawk-replace-one-character-only-in-a-certain-column%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









            14














            $ awk 'BEGIN{FS=OFS=";"} {gsub(/./, ",", $2)} 1' ip.txt
            2018.01.02;1,5;comment 1
            2018.01.04;2,75;comment 2
            2018.01.07;5,25;comment 4
            2018.01.09;1,25;comment 7




            • BEGIN{} this block of code will be executed before processing any input line


            • FS=OFS=";" set input and output field separator as ;


            • gsub(/./, ",", $2) for each input line, replace all the . in 2nd field with ,


            • 1 is an awk idiom to print contents of $0 (which contains the input record)






            share|improve this answer



















            • 1




              awesome, much THX!
              – nath
              yesterday
















            14














            $ awk 'BEGIN{FS=OFS=";"} {gsub(/./, ",", $2)} 1' ip.txt
            2018.01.02;1,5;comment 1
            2018.01.04;2,75;comment 2
            2018.01.07;5,25;comment 4
            2018.01.09;1,25;comment 7




            • BEGIN{} this block of code will be executed before processing any input line


            • FS=OFS=";" set input and output field separator as ;


            • gsub(/./, ",", $2) for each input line, replace all the . in 2nd field with ,


            • 1 is an awk idiom to print contents of $0 (which contains the input record)






            share|improve this answer



















            • 1




              awesome, much THX!
              – nath
              yesterday














            14












            14








            14






            $ awk 'BEGIN{FS=OFS=";"} {gsub(/./, ",", $2)} 1' ip.txt
            2018.01.02;1,5;comment 1
            2018.01.04;2,75;comment 2
            2018.01.07;5,25;comment 4
            2018.01.09;1,25;comment 7




            • BEGIN{} this block of code will be executed before processing any input line


            • FS=OFS=";" set input and output field separator as ;


            • gsub(/./, ",", $2) for each input line, replace all the . in 2nd field with ,


            • 1 is an awk idiom to print contents of $0 (which contains the input record)






            share|improve this answer














            $ awk 'BEGIN{FS=OFS=";"} {gsub(/./, ",", $2)} 1' ip.txt
            2018.01.02;1,5;comment 1
            2018.01.04;2,75;comment 2
            2018.01.07;5,25;comment 4
            2018.01.09;1,25;comment 7




            • BEGIN{} this block of code will be executed before processing any input line


            • FS=OFS=";" set input and output field separator as ;


            • gsub(/./, ",", $2) for each input line, replace all the . in 2nd field with ,


            • 1 is an awk idiom to print contents of $0 (which contains the input record)







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited yesterday

























            answered yesterday









            Sundeep

            7,2861927




            7,2861927








            • 1




              awesome, much THX!
              – nath
              yesterday














            • 1




              awesome, much THX!
              – nath
              yesterday








            1




            1




            awesome, much THX!
            – nath
            yesterday




            awesome, much THX!
            – nath
            yesterday













            7














            sed 's/./,/3' file


            replace the third occurence of the dot






            share|improve this answer



















            • 1




              Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
              – twalberg
              yesterday










            • I took into account the observations
              – Emilio Galarraga
              yesterday










            • cat would not necessarily be useless here. It would allow the operation to use 2 cores.
              – ron rothman ℝℝ
              yesterday
















            7














            sed 's/./,/3' file


            replace the third occurence of the dot






            share|improve this answer



















            • 1




              Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
              – twalberg
              yesterday










            • I took into account the observations
              – Emilio Galarraga
              yesterday










            • cat would not necessarily be useless here. It would allow the operation to use 2 cores.
              – ron rothman ℝℝ
              yesterday














            7












            7








            7






            sed 's/./,/3' file


            replace the third occurence of the dot






            share|improve this answer














            sed 's/./,/3' file


            replace the third occurence of the dot







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited yesterday

























            answered yesterday









            Emilio Galarraga

            45929




            45929








            • 1




              Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
              – twalberg
              yesterday










            • I took into account the observations
              – Emilio Galarraga
              yesterday










            • cat would not necessarily be useless here. It would allow the operation to use 2 cores.
              – ron rothman ℝℝ
              yesterday














            • 1




              Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
              – twalberg
              yesterday










            • I took into account the observations
              – Emilio Galarraga
              yesterday










            • cat would not necessarily be useless here. It would allow the operation to use 2 cores.
              – ron rothman ℝℝ
              yesterday








            1




            1




            Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
            – twalberg
            yesterday




            Another Useles Use of cat... Why not just sed 's/./,/3' file? (Also, the comma does not need to be escaped.)
            – twalberg
            yesterday












            I took into account the observations
            – Emilio Galarraga
            yesterday




            I took into account the observations
            – Emilio Galarraga
            yesterday












            cat would not necessarily be useless here. It would allow the operation to use 2 cores.
            – ron rothman ℝℝ
            yesterday




            cat would not necessarily be useless here. It would allow the operation to use 2 cores.
            – ron rothman ℝℝ
            yesterday











            4














            Done by below method using awk



            Command: awk -F ";" '{gsub(/./,",",$2);print $1";"$2";"$3}' filename



            output



            2018.01.02;1,5;comment 1
            2018.01.04;2,75;comment 2
            2018.01.07;5,25;comment 4
            2018.01.09;1,25;comment 7





            share|improve this answer


























              4














              Done by below method using awk



              Command: awk -F ";" '{gsub(/./,",",$2);print $1";"$2";"$3}' filename



              output



              2018.01.02;1,5;comment 1
              2018.01.04;2,75;comment 2
              2018.01.07;5,25;comment 4
              2018.01.09;1,25;comment 7





              share|improve this answer
























                4












                4








                4






                Done by below method using awk



                Command: awk -F ";" '{gsub(/./,",",$2);print $1";"$2";"$3}' filename



                output



                2018.01.02;1,5;comment 1
                2018.01.04;2,75;comment 2
                2018.01.07;5,25;comment 4
                2018.01.09;1,25;comment 7





                share|improve this answer












                Done by below method using awk



                Command: awk -F ";" '{gsub(/./,",",$2);print $1";"$2";"$3}' filename



                output



                2018.01.02;1,5;comment 1
                2018.01.04;2,75;comment 2
                2018.01.07;5,25;comment 4
                2018.01.09;1,25;comment 7






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered yesterday









                Praveen Kumar BS

                1,252138




                1,252138






























                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f492500%2fawk-replace-one-character-only-in-a-certain-column%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

                    1300-talet

                    1300-talet

                    Display a custom attribute below product name in the front-end Magento 1.9.3.8