How to put a comma between two columns in a text file












-1















This is my text file:



0019121002313002316003135  
0057936000814000814003023
0081638001519001523001176
0090531001841001842002633
0111210001515001518000912
0115400001807001828001593


I want the processed output as:



0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


How do I do this?










share|improve this question









New contributor




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





















  • Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

    – Sparhawk
    7 hours ago
















-1















This is my text file:



0019121002313002316003135  
0057936000814000814003023
0081638001519001523001176
0090531001841001842002633
0111210001515001518000912
0115400001807001828001593


I want the processed output as:



0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


How do I do this?










share|improve this question









New contributor




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





















  • Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

    – Sparhawk
    7 hours ago














-1












-1








-1








This is my text file:



0019121002313002316003135  
0057936000814000814003023
0081638001519001523001176
0090531001841001842002633
0111210001515001518000912
0115400001807001828001593


I want the processed output as:



0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


How do I do this?










share|improve this question









New contributor




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












This is my text file:



0019121002313002316003135  
0057936000814000814003023
0081638001519001523001176
0090531001841001842002633
0111210001515001518000912
0115400001807001828001593


I want the processed output as:



0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


How do I do this?







linux shell-script






share|improve this question









New contributor




Aditya 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 question









New contributor




Aditya 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 question




share|improve this question








edited 6 hours ago









Haxiel

1,733410




1,733410






New contributor




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









asked 8 hours ago









AdityaAditya

43




43




New contributor




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





New contributor





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






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













  • Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

    – Sparhawk
    7 hours ago



















  • Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

    – Sparhawk
    7 hours ago

















Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

– Sparhawk
7 hours ago





Please don't post images of text. They are impossible to copy-paste, impossible for screen readers, and take up more bandwidth. Please replace the image with plain text.

– Sparhawk
7 hours ago










3 Answers
3






active

oldest

votes


















5














$ sed -E 's/(.{7})(.{6})(.{6})(.{6})/1,2,3,4/' file
0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


That is, match the bits of each line that makes up the new fields and insert comma in-between them. The matching of a field is done using .{7} or .{6} depending on the wanted field length.






share|improve this answer
























  • FWIW the last capturing group is unnecessary.

    – Sparhawk
    6 hours ago



















2














With GNU awk (gawk) you can set explicit field widths:



$ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593


See Processing Fixed-Width Data






share|improve this answer































    1














    Assuming it is not a mistake that the first comma is after 7 characters, and the next ones are at multiples of 6, I propose



    sed 's/(.......)(......)(......)/1,2,3,/'





    share|improve this answer
























    • Thanks 4 your answer.. I got my result

      – Aditya
      7 hours ago











    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
    });


    }
    });






    Aditya is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f494992%2fhow-to-put-a-comma-between-two-columns-in-a-text-file%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









    5














    $ sed -E 's/(.{7})(.{6})(.{6})(.{6})/1,2,3,4/' file
    0019121,002313,002316,003135
    0057936,000814,000814,003023
    0081638,001519,001523,001176
    0090531,001841,001842,002633
    0111210,001515,001518,000912
    0115400,001807,001828,001593


    That is, match the bits of each line that makes up the new fields and insert comma in-between them. The matching of a field is done using .{7} or .{6} depending on the wanted field length.






    share|improve this answer
























    • FWIW the last capturing group is unnecessary.

      – Sparhawk
      6 hours ago
















    5














    $ sed -E 's/(.{7})(.{6})(.{6})(.{6})/1,2,3,4/' file
    0019121,002313,002316,003135
    0057936,000814,000814,003023
    0081638,001519,001523,001176
    0090531,001841,001842,002633
    0111210,001515,001518,000912
    0115400,001807,001828,001593


    That is, match the bits of each line that makes up the new fields and insert comma in-between them. The matching of a field is done using .{7} or .{6} depending on the wanted field length.






    share|improve this answer
























    • FWIW the last capturing group is unnecessary.

      – Sparhawk
      6 hours ago














    5












    5








    5







    $ sed -E 's/(.{7})(.{6})(.{6})(.{6})/1,2,3,4/' file
    0019121,002313,002316,003135
    0057936,000814,000814,003023
    0081638,001519,001523,001176
    0090531,001841,001842,002633
    0111210,001515,001518,000912
    0115400,001807,001828,001593


    That is, match the bits of each line that makes up the new fields and insert comma in-between them. The matching of a field is done using .{7} or .{6} depending on the wanted field length.






    share|improve this answer













    $ sed -E 's/(.{7})(.{6})(.{6})(.{6})/1,2,3,4/' file
    0019121,002313,002316,003135
    0057936,000814,000814,003023
    0081638,001519,001523,001176
    0090531,001841,001842,002633
    0111210,001515,001518,000912
    0115400,001807,001828,001593


    That is, match the bits of each line that makes up the new fields and insert comma in-between them. The matching of a field is done using .{7} or .{6} depending on the wanted field length.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 7 hours ago









    KusalanandaKusalananda

    124k16234386




    124k16234386













    • FWIW the last capturing group is unnecessary.

      – Sparhawk
      6 hours ago



















    • FWIW the last capturing group is unnecessary.

      – Sparhawk
      6 hours ago

















    FWIW the last capturing group is unnecessary.

    – Sparhawk
    6 hours ago





    FWIW the last capturing group is unnecessary.

    – Sparhawk
    6 hours ago













    2














    With GNU awk (gawk) you can set explicit field widths:



    $ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
    0019121,002313,002316,003135
    0057936,000814,000814,003023
    0081638,001519,001523,001176
    0090531,001841,001842,002633
    0111210,001515,001518,000912
    0115400,001807,001828,001593


    See Processing Fixed-Width Data






    share|improve this answer




























      2














      With GNU awk (gawk) you can set explicit field widths:



      $ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
      0019121,002313,002316,003135
      0057936,000814,000814,003023
      0081638,001519,001523,001176
      0090531,001841,001842,002633
      0111210,001515,001518,000912
      0115400,001807,001828,001593


      See Processing Fixed-Width Data






      share|improve this answer


























        2












        2








        2







        With GNU awk (gawk) you can set explicit field widths:



        $ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
        0019121,002313,002316,003135
        0057936,000814,000814,003023
        0081638,001519,001523,001176
        0090531,001841,001842,002633
        0111210,001515,001518,000912
        0115400,001807,001828,001593


        See Processing Fixed-Width Data






        share|improve this answer













        With GNU awk (gawk) you can set explicit field widths:



        $ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
        0019121,002313,002316,003135
        0057936,000814,000814,003023
        0081638,001519,001523,001176
        0090531,001841,001842,002633
        0111210,001515,001518,000912
        0115400,001807,001828,001593


        See Processing Fixed-Width Data







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 hours ago









        steeldriversteeldriver

        35.5k35286




        35.5k35286























            1














            Assuming it is not a mistake that the first comma is after 7 characters, and the next ones are at multiples of 6, I propose



            sed 's/(.......)(......)(......)/1,2,3,/'





            share|improve this answer
























            • Thanks 4 your answer.. I got my result

              – Aditya
              7 hours ago
















            1














            Assuming it is not a mistake that the first comma is after 7 characters, and the next ones are at multiples of 6, I propose



            sed 's/(.......)(......)(......)/1,2,3,/'





            share|improve this answer
























            • Thanks 4 your answer.. I got my result

              – Aditya
              7 hours ago














            1












            1








            1







            Assuming it is not a mistake that the first comma is after 7 characters, and the next ones are at multiples of 6, I propose



            sed 's/(.......)(......)(......)/1,2,3,/'





            share|improve this answer













            Assuming it is not a mistake that the first comma is after 7 characters, and the next ones are at multiples of 6, I propose



            sed 's/(.......)(......)(......)/1,2,3,/'






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 7 hours ago









            icarusicarus

            5,7711929




            5,7711929













            • Thanks 4 your answer.. I got my result

              – Aditya
              7 hours ago



















            • Thanks 4 your answer.. I got my result

              – Aditya
              7 hours ago

















            Thanks 4 your answer.. I got my result

            – Aditya
            7 hours ago





            Thanks 4 your answer.. I got my result

            – Aditya
            7 hours ago










            Aditya is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            Aditya is a new contributor. Be nice, and check out our Code of Conduct.













            Aditya is a new contributor. Be nice, and check out our Code of Conduct.












            Aditya is a new contributor. Be nice, and check out our Code of Conduct.
















            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%2f494992%2fhow-to-put-a-comma-between-two-columns-in-a-text-file%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

            Loup dans la culture

            How to solve the problem of ntp “Unable to contact time server” from KDE?

            ASUS Zenbook UX433/UX333 — Configure Touchpad-embedded numpad on Linux