what does this command do sed 's/~/ /g'?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
-3
down vote

favorite












I am passing a set of 6 arguments initially to a script.



Script.sh a b c d e f


One of the commands in the script which is managing the arguments;



comm=$(echo $1 |sed 's/~/ /g')









share|improve this question























  • Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
    – RoVo
    Nov 28 at 13:28















up vote
-3
down vote

favorite












I am passing a set of 6 arguments initially to a script.



Script.sh a b c d e f


One of the commands in the script which is managing the arguments;



comm=$(echo $1 |sed 's/~/ /g')









share|improve this question























  • Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
    – RoVo
    Nov 28 at 13:28













up vote
-3
down vote

favorite









up vote
-3
down vote

favorite











I am passing a set of 6 arguments initially to a script.



Script.sh a b c d e f


One of the commands in the script which is managing the arguments;



comm=$(echo $1 |sed 's/~/ /g')









share|improve this question















I am passing a set of 6 arguments initially to a script.



Script.sh a b c d e f


One of the commands in the script which is managing the arguments;



comm=$(echo $1 |sed 's/~/ /g')






linux sed






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 28 at 13:42









Kusalananda

118k16223364




118k16223364










asked Nov 28 at 13:14









Diganto Paul

315




315











  • Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
    – RoVo
    Nov 28 at 13:28

















  • Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
    – RoVo
    Nov 28 at 13:28
















Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
– RoVo
Nov 28 at 13:28





Imho, some at least basic research should be done before asking questions. You can find the answer in the info text of sed tag which has been used in this question. unix.stackexchange.com/tags/sed/info
– RoVo
Nov 28 at 13:28











1 Answer
1






active

oldest

votes

















up vote
4
down vote













The sed expression s/~/ /g replaces every tilde with a space character. It means, literally, "substitute everything that matches the regular expression ~ with a space, globally (on the whole input line)". The expression could in this case also have been written as y/~/ /, and the whole sed command could be replaced by the faster tr '~' ' '.



In bash, this is more efficiently done with



comm=$1//~/ 


The ~ has to be escaped here to not be expanded to the pathname of the current user's home directory.



In any case, the $1 needs to be double quoted if you are using it with echo (unless you want the tilde to be interpreted as someone's home directory, and other shell globs to be expanded to filenames), and ideally, the command would be written with printf (this avoids an initial dash in $1 from being interpreted as the start of some option to echo):



comm=$( printf '%sn' "$1" | tr '~' ' ' )


Related:



  • Why is printf better than echo?

  • Why does my shell script choke on whitespace or other special characters?





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',
    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%2f484659%2fwhat-does-this-command-do-sed-s-g%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
    4
    down vote













    The sed expression s/~/ /g replaces every tilde with a space character. It means, literally, "substitute everything that matches the regular expression ~ with a space, globally (on the whole input line)". The expression could in this case also have been written as y/~/ /, and the whole sed command could be replaced by the faster tr '~' ' '.



    In bash, this is more efficiently done with



    comm=$1//~/ 


    The ~ has to be escaped here to not be expanded to the pathname of the current user's home directory.



    In any case, the $1 needs to be double quoted if you are using it with echo (unless you want the tilde to be interpreted as someone's home directory, and other shell globs to be expanded to filenames), and ideally, the command would be written with printf (this avoids an initial dash in $1 from being interpreted as the start of some option to echo):



    comm=$( printf '%sn' "$1" | tr '~' ' ' )


    Related:



    • Why is printf better than echo?

    • Why does my shell script choke on whitespace or other special characters?





    share|improve this answer


























      up vote
      4
      down vote













      The sed expression s/~/ /g replaces every tilde with a space character. It means, literally, "substitute everything that matches the regular expression ~ with a space, globally (on the whole input line)". The expression could in this case also have been written as y/~/ /, and the whole sed command could be replaced by the faster tr '~' ' '.



      In bash, this is more efficiently done with



      comm=$1//~/ 


      The ~ has to be escaped here to not be expanded to the pathname of the current user's home directory.



      In any case, the $1 needs to be double quoted if you are using it with echo (unless you want the tilde to be interpreted as someone's home directory, and other shell globs to be expanded to filenames), and ideally, the command would be written with printf (this avoids an initial dash in $1 from being interpreted as the start of some option to echo):



      comm=$( printf '%sn' "$1" | tr '~' ' ' )


      Related:



      • Why is printf better than echo?

      • Why does my shell script choke on whitespace or other special characters?





      share|improve this answer
























        up vote
        4
        down vote










        up vote
        4
        down vote









        The sed expression s/~/ /g replaces every tilde with a space character. It means, literally, "substitute everything that matches the regular expression ~ with a space, globally (on the whole input line)". The expression could in this case also have been written as y/~/ /, and the whole sed command could be replaced by the faster tr '~' ' '.



        In bash, this is more efficiently done with



        comm=$1//~/ 


        The ~ has to be escaped here to not be expanded to the pathname of the current user's home directory.



        In any case, the $1 needs to be double quoted if you are using it with echo (unless you want the tilde to be interpreted as someone's home directory, and other shell globs to be expanded to filenames), and ideally, the command would be written with printf (this avoids an initial dash in $1 from being interpreted as the start of some option to echo):



        comm=$( printf '%sn' "$1" | tr '~' ' ' )


        Related:



        • Why is printf better than echo?

        • Why does my shell script choke on whitespace or other special characters?





        share|improve this answer














        The sed expression s/~/ /g replaces every tilde with a space character. It means, literally, "substitute everything that matches the regular expression ~ with a space, globally (on the whole input line)". The expression could in this case also have been written as y/~/ /, and the whole sed command could be replaced by the faster tr '~' ' '.



        In bash, this is more efficiently done with



        comm=$1//~/ 


        The ~ has to be escaped here to not be expanded to the pathname of the current user's home directory.



        In any case, the $1 needs to be double quoted if you are using it with echo (unless you want the tilde to be interpreted as someone's home directory, and other shell globs to be expanded to filenames), and ideally, the command would be written with printf (this avoids an initial dash in $1 from being interpreted as the start of some option to echo):



        comm=$( printf '%sn' "$1" | tr '~' ' ' )


        Related:



        • Why is printf better than echo?

        • Why does my shell script choke on whitespace or other special characters?






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 28 at 13:40

























        answered Nov 28 at 13:27









        Kusalananda

        118k16223364




        118k16223364



























            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%2f484659%2fwhat-does-this-command-do-sed-s-g%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

            How to check contact read email or not when send email to Individual?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?