grep on remote machine












0















I have a template file with content



count : 2



ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF


Desired output is 2



but it's printing count : 2










share|improve this question







New contributor




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





















  • 1) You don't need cat. 2) Add the contents of the file to your question.

    – Nasir Riley
    1 hour ago











  • What have you done to debug?

    – G-Man
    42 mins ago
















0















I have a template file with content



count : 2



ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF


Desired output is 2



but it's printing count : 2










share|improve this question







New contributor




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





















  • 1) You don't need cat. 2) Add the contents of the file to your question.

    – Nasir Riley
    1 hour ago











  • What have you done to debug?

    – G-Man
    42 mins ago














0












0








0








I have a template file with content



count : 2



ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF


Desired output is 2



but it's printing count : 2










share|improve this question







New contributor




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












I have a template file with content



count : 2



ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF


Desired output is 2



but it's printing count : 2







ssh grep remote






share|improve this question







New contributor




krishnan 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




krishnan 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






New contributor




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









asked 1 hour ago









krishnankrishnan

1




1




New contributor




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





New contributor





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






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













  • 1) You don't need cat. 2) Add the contents of the file to your question.

    – Nasir Riley
    1 hour ago











  • What have you done to debug?

    – G-Man
    42 mins ago



















  • 1) You don't need cat. 2) Add the contents of the file to your question.

    – Nasir Riley
    1 hour ago











  • What have you done to debug?

    – G-Man
    42 mins ago

















1) You don't need cat. 2) Add the contents of the file to your question.

– Nasir Riley
1 hour ago





1) You don't need cat. 2) Add the contents of the file to your question.

– Nasir Riley
1 hour ago













What have you done to debug?

– G-Man
42 mins ago





What have you done to debug?

– G-Man
42 mins ago










1 Answer
1






active

oldest

votes


















1














The here-document << EOF creates a quoting context similar to "..." in which variables are expanded. You have a $2 in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...' inside "...")



Your local shell probably doesn't have a $2 parameter, so it expands to the empty string, and what the remote shell receives on stdin is:



cat template|grep count|awk -F":" '{print }' > log


And awk prints the whole line.



You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:



ssh ... << 'EOF'
...
EOF


If you do that to your example, the $2 will survive heredoc processing and be passed through ssh to the remote shell.



Additional tip: cat | grep | awk is doubly wasteful, since awkcan do all that. Your remote command is equivalent to



awk -F":" '/count/ {print $2}' template > log





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


    }
    });






    krishnan 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%2f508631%2fgrep-on-remote-machine%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









    1














    The here-document << EOF creates a quoting context similar to "..." in which variables are expanded. You have a $2 in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...' inside "...")



    Your local shell probably doesn't have a $2 parameter, so it expands to the empty string, and what the remote shell receives on stdin is:



    cat template|grep count|awk -F":" '{print }' > log


    And awk prints the whole line.



    You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:



    ssh ... << 'EOF'
    ...
    EOF


    If you do that to your example, the $2 will survive heredoc processing and be passed through ssh to the remote shell.



    Additional tip: cat | grep | awk is doubly wasteful, since awkcan do all that. Your remote command is equivalent to



    awk -F":" '/count/ {print $2}' template > log





    share|improve this answer




























      1














      The here-document << EOF creates a quoting context similar to "..." in which variables are expanded. You have a $2 in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...' inside "...")



      Your local shell probably doesn't have a $2 parameter, so it expands to the empty string, and what the remote shell receives on stdin is:



      cat template|grep count|awk -F":" '{print }' > log


      And awk prints the whole line.



      You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:



      ssh ... << 'EOF'
      ...
      EOF


      If you do that to your example, the $2 will survive heredoc processing and be passed through ssh to the remote shell.



      Additional tip: cat | grep | awk is doubly wasteful, since awkcan do all that. Your remote command is equivalent to



      awk -F":" '/count/ {print $2}' template > log





      share|improve this answer


























        1












        1








        1







        The here-document << EOF creates a quoting context similar to "..." in which variables are expanded. You have a $2 in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...' inside "...")



        Your local shell probably doesn't have a $2 parameter, so it expands to the empty string, and what the remote shell receives on stdin is:



        cat template|grep count|awk -F":" '{print }' > log


        And awk prints the whole line.



        You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:



        ssh ... << 'EOF'
        ...
        EOF


        If you do that to your example, the $2 will survive heredoc processing and be passed through ssh to the remote shell.



        Additional tip: cat | grep | awk is doubly wasteful, since awkcan do all that. Your remote command is equivalent to



        awk -F":" '/count/ {print $2}' template > log





        share|improve this answer













        The here-document << EOF creates a quoting context similar to "..." in which variables are expanded. You have a $2 in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...' inside "...")



        Your local shell probably doesn't have a $2 parameter, so it expands to the empty string, and what the remote shell receives on stdin is:



        cat template|grep count|awk -F":" '{print }' > log


        And awk prints the whole line.



        You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:



        ssh ... << 'EOF'
        ...
        EOF


        If you do that to your example, the $2 will survive heredoc processing and be passed through ssh to the remote shell.



        Additional tip: cat | grep | awk is doubly wasteful, since awkcan do all that. Your remote command is equivalent to



        awk -F":" '/count/ {print $2}' template > log






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 46 mins ago









        Wumpus Q. WumbleyWumpus Q. Wumbley

        4,7401322




        4,7401322






















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










            draft saved

            draft discarded


















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













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












            krishnan 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%2f508631%2fgrep-on-remote-machine%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

            CARDNET

            Boot-repair Failure: Unable to locate package grub-common:i386

            濃尾地震