Get Field Separator from a File











up vote
0
down vote

favorite












I have several files and they are different between each other and they use ; and | as separators.



Is there a way to let my program read the file get the ; or | separator to save into a variable and use it later on in my script?










share|improve this question
























  • When you show 3 example files and show how to determine the sep it will help.
    – Walter A
    Nov 11 at 16:32















up vote
0
down vote

favorite












I have several files and they are different between each other and they use ; and | as separators.



Is there a way to let my program read the file get the ; or | separator to save into a variable and use it later on in my script?










share|improve this question
























  • When you show 3 example files and show how to determine the sep it will help.
    – Walter A
    Nov 11 at 16:32













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have several files and they are different between each other and they use ; and | as separators.



Is there a way to let my program read the file get the ; or | separator to save into a variable and use it later on in my script?










share|improve this question















I have several files and they are different between each other and they use ; and | as separators.



Is there a way to let my program read the file get the ; or | separator to save into a variable and use it later on in my script?







ksh






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 5:24









Tân Nguyễn

1




1










asked Nov 11 at 0:04









Fabrizio Anastasio

11




11












  • When you show 3 example files and show how to determine the sep it will help.
    – Walter A
    Nov 11 at 16:32


















  • When you show 3 example files and show how to determine the sep it will help.
    – Walter A
    Nov 11 at 16:32
















When you show 3 example files and show how to determine the sep it will help.
– Walter A
Nov 11 at 16:32




When you show 3 example files and show how to determine the sep it will help.
– Walter A
Nov 11 at 16:32












1 Answer
1






active

oldest

votes

















up vote
0
down vote













Generally speaking the answer is 'yes' you can dynamically determine the delimiter and use it in later coding.



You haven't mentioned how you'll determine which delimiter is in use (eg, what happens if both characters exist in your data file?) so for the sake of discussion we'll assume the delimiter has been determined and stored in the del variable.



You also haven't stated how you'll use this delimiter in your code so, again for sake of discussion, we'll look at examples using cut and awk.



Let's assume our datafile (mydata) contains the following single line of data:



$ cat mydata
abc;def|ghi;jkl|mno;pqr|stu


We'll now switch our delimiter between ; and | and look at some simple cut and awk examples ...



############################
# set our delimiter to ';'

$ del=";"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc

$ awk -F"${del}" '{print $1}' mydata
abc

#### display 4th field

$ cut -d"${del}" -f4 mydata
pqr|stu

$ awk -F"${del}" '{print $4}' mydata
pqr|stu

############################
# set our delimiter to '|'
#

$ del="|"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc;def

$ awk -F"${del}" '{print $1}' mydata
abc;def

##### display 4th field

$ cut -d"${del}" -f4 mydata
stu

$ awk -F"${del}" '{print $4}' mydata
stu





share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    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',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    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%2fstackoverflow.com%2fquestions%2f53244637%2fget-field-separator-from-a-file%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    Generally speaking the answer is 'yes' you can dynamically determine the delimiter and use it in later coding.



    You haven't mentioned how you'll determine which delimiter is in use (eg, what happens if both characters exist in your data file?) so for the sake of discussion we'll assume the delimiter has been determined and stored in the del variable.



    You also haven't stated how you'll use this delimiter in your code so, again for sake of discussion, we'll look at examples using cut and awk.



    Let's assume our datafile (mydata) contains the following single line of data:



    $ cat mydata
    abc;def|ghi;jkl|mno;pqr|stu


    We'll now switch our delimiter between ; and | and look at some simple cut and awk examples ...



    ############################
    # set our delimiter to ';'

    $ del=";"

    ##### display 1st field

    $ cut -d"${del}" -f1 mydata
    abc

    $ awk -F"${del}" '{print $1}' mydata
    abc

    #### display 4th field

    $ cut -d"${del}" -f4 mydata
    pqr|stu

    $ awk -F"${del}" '{print $4}' mydata
    pqr|stu

    ############################
    # set our delimiter to '|'
    #

    $ del="|"

    ##### display 1st field

    $ cut -d"${del}" -f1 mydata
    abc;def

    $ awk -F"${del}" '{print $1}' mydata
    abc;def

    ##### display 4th field

    $ cut -d"${del}" -f4 mydata
    stu

    $ awk -F"${del}" '{print $4}' mydata
    stu





    share|improve this answer

























      up vote
      0
      down vote













      Generally speaking the answer is 'yes' you can dynamically determine the delimiter and use it in later coding.



      You haven't mentioned how you'll determine which delimiter is in use (eg, what happens if both characters exist in your data file?) so for the sake of discussion we'll assume the delimiter has been determined and stored in the del variable.



      You also haven't stated how you'll use this delimiter in your code so, again for sake of discussion, we'll look at examples using cut and awk.



      Let's assume our datafile (mydata) contains the following single line of data:



      $ cat mydata
      abc;def|ghi;jkl|mno;pqr|stu


      We'll now switch our delimiter between ; and | and look at some simple cut and awk examples ...



      ############################
      # set our delimiter to ';'

      $ del=";"

      ##### display 1st field

      $ cut -d"${del}" -f1 mydata
      abc

      $ awk -F"${del}" '{print $1}' mydata
      abc

      #### display 4th field

      $ cut -d"${del}" -f4 mydata
      pqr|stu

      $ awk -F"${del}" '{print $4}' mydata
      pqr|stu

      ############################
      # set our delimiter to '|'
      #

      $ del="|"

      ##### display 1st field

      $ cut -d"${del}" -f1 mydata
      abc;def

      $ awk -F"${del}" '{print $1}' mydata
      abc;def

      ##### display 4th field

      $ cut -d"${del}" -f4 mydata
      stu

      $ awk -F"${del}" '{print $4}' mydata
      stu





      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        Generally speaking the answer is 'yes' you can dynamically determine the delimiter and use it in later coding.



        You haven't mentioned how you'll determine which delimiter is in use (eg, what happens if both characters exist in your data file?) so for the sake of discussion we'll assume the delimiter has been determined and stored in the del variable.



        You also haven't stated how you'll use this delimiter in your code so, again for sake of discussion, we'll look at examples using cut and awk.



        Let's assume our datafile (mydata) contains the following single line of data:



        $ cat mydata
        abc;def|ghi;jkl|mno;pqr|stu


        We'll now switch our delimiter between ; and | and look at some simple cut and awk examples ...



        ############################
        # set our delimiter to ';'

        $ del=";"

        ##### display 1st field

        $ cut -d"${del}" -f1 mydata
        abc

        $ awk -F"${del}" '{print $1}' mydata
        abc

        #### display 4th field

        $ cut -d"${del}" -f4 mydata
        pqr|stu

        $ awk -F"${del}" '{print $4}' mydata
        pqr|stu

        ############################
        # set our delimiter to '|'
        #

        $ del="|"

        ##### display 1st field

        $ cut -d"${del}" -f1 mydata
        abc;def

        $ awk -F"${del}" '{print $1}' mydata
        abc;def

        ##### display 4th field

        $ cut -d"${del}" -f4 mydata
        stu

        $ awk -F"${del}" '{print $4}' mydata
        stu





        share|improve this answer












        Generally speaking the answer is 'yes' you can dynamically determine the delimiter and use it in later coding.



        You haven't mentioned how you'll determine which delimiter is in use (eg, what happens if both characters exist in your data file?) so for the sake of discussion we'll assume the delimiter has been determined and stored in the del variable.



        You also haven't stated how you'll use this delimiter in your code so, again for sake of discussion, we'll look at examples using cut and awk.



        Let's assume our datafile (mydata) contains the following single line of data:



        $ cat mydata
        abc;def|ghi;jkl|mno;pqr|stu


        We'll now switch our delimiter between ; and | and look at some simple cut and awk examples ...



        ############################
        # set our delimiter to ';'

        $ del=";"

        ##### display 1st field

        $ cut -d"${del}" -f1 mydata
        abc

        $ awk -F"${del}" '{print $1}' mydata
        abc

        #### display 4th field

        $ cut -d"${del}" -f4 mydata
        pqr|stu

        $ awk -F"${del}" '{print $4}' mydata
        pqr|stu

        ############################
        # set our delimiter to '|'
        #

        $ del="|"

        ##### display 1st field

        $ cut -d"${del}" -f1 mydata
        abc;def

        $ awk -F"${del}" '{print $1}' mydata
        abc;def

        ##### display 4th field

        $ cut -d"${del}" -f4 mydata
        stu

        $ awk -F"${del}" '{print $4}' mydata
        stu






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 11 at 15:25









        markp

        2,4712316




        2,4712316






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53244637%2fget-field-separator-from-a-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

            Florida Star v. B. J. F.

            Danny Elfman

            Lugert, Oklahoma