Awk - replace one character only in a certain column












6














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



























    6














    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

























      6












      6








      6







      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 22 hours ago









      nath

      912525




      912525






















          3 Answers
          3






          active

          oldest

          votes


















          13














          $ 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
            22 hours ago



















          6














          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
            21 hours ago










          • I took into account the observations
            – Emilio Galarraga
            21 hours ago










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



















          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









            13














            $ 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
              22 hours ago
















            13














            $ 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
              22 hours ago














            13












            13








            13






            $ 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 22 hours ago

























            answered 22 hours ago









            Sundeep

            7,2761927




            7,2761927








            • 1




              awesome, much THX!
              – nath
              22 hours ago














            • 1




              awesome, much THX!
              – nath
              22 hours ago








            1




            1




            awesome, much THX!
            – nath
            22 hours ago




            awesome, much THX!
            – nath
            22 hours ago













            6














            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
              21 hours ago










            • I took into account the observations
              – Emilio Galarraga
              21 hours ago










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
















            6














            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
              21 hours ago










            • I took into account the observations
              – Emilio Galarraga
              21 hours ago










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














            6












            6








            6






            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 21 hours ago

























            answered 22 hours ago









            Emilio Galarraga

            44929




            44929








            • 1




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










            • I took into account the observations
              – Emilio Galarraga
              21 hours ago










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














            • 1




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










            • I took into account the observations
              – Emilio Galarraga
              21 hours ago










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








            1




            1




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




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












            I took into account the observations
            – Emilio Galarraga
            21 hours ago




            I took into account the observations
            – Emilio Galarraga
            21 hours ago












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




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











            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 21 hours ago









                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

                    Mario Kart Wii

                    What does “Dominus providebit” mean?

                    Antonio Litta Visconti Arese