cut not outputting anything












1















I created a script by using the command line initially:



grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:



grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


After this was complete, rather than the script working, it just printed lots of blank lines.



Any help would be greatly appreciated. Thanks!










share|improve this question

























  • Add an echo $1 to see what's going on, and any spaces in the directory names?

    – Xen2050
    Mar 14 at 22:45
















1















I created a script by using the command line initially:



grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:



grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


After this was complete, rather than the script working, it just printed lots of blank lines.



Any help would be greatly appreciated. Thanks!










share|improve this question

























  • Add an echo $1 to see what's going on, and any spaces in the directory names?

    – Xen2050
    Mar 14 at 22:45














1












1








1








I created a script by using the command line initially:



grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:



grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


After this was complete, rather than the script working, it just printed lots of blank lines.



Any help would be greatly appreciated. Thanks!










share|improve this question
















I created a script by using the command line initially:



grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:



grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'


After this was complete, rather than the script working, it just printed lots of blank lines.



Any help would be greatly appreciated. Thanks!







command-line bash scripts cut-command






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 14 at 17:04









Ravexina

33.3k1488115




33.3k1488115










asked Mar 14 at 16:34









Matthew EvansMatthew Evans

61




61













  • Add an echo $1 to see what's going on, and any spaces in the directory names?

    – Xen2050
    Mar 14 at 22:45



















  • Add an echo $1 to see what's going on, and any spaces in the directory names?

    – Xen2050
    Mar 14 at 22:45

















Add an echo $1 to see what's going on, and any spaces in the directory names?

– Xen2050
Mar 14 at 22:45





Add an echo $1 to see what's going on, and any spaces in the directory names?

– Xen2050
Mar 14 at 22:45










1 Answer
1






active

oldest

votes


















0














I guess you are running your script like: script.sh dir/ or bash script.sh dir/.



The way you pass the directory is causing the problem.



In your script you got a grep command:



grep -c "Author" $1/*


If you pass the directory with tailing slash, the grep command would be run as:



grep -c "Author" dir//*


Example:



grep -c "Author" dir//somefile.dat dir//someother-file.dat


And its result would be similar to:



dir//somefile.dat:5


And your cut command would only return an empty string and pass it to sort:



dir//somefile.dat:5   # < You are asking for second part which is empty


So either run your script like: script.sh dir or change it to something like this:



#!/bin/bash

DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'





share|improve this answer

























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "89"
    };
    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: 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%2faskubuntu.com%2fquestions%2f1125659%2fcut-not-outputting-anything%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









    0














    I guess you are running your script like: script.sh dir/ or bash script.sh dir/.



    The way you pass the directory is causing the problem.



    In your script you got a grep command:



    grep -c "Author" $1/*


    If you pass the directory with tailing slash, the grep command would be run as:



    grep -c "Author" dir//*


    Example:



    grep -c "Author" dir//somefile.dat dir//someother-file.dat


    And its result would be similar to:



    dir//somefile.dat:5


    And your cut command would only return an empty string and pass it to sort:



    dir//somefile.dat:5   # < You are asking for second part which is empty


    So either run your script like: script.sh dir or change it to something like this:



    #!/bin/bash

    DIR=${1%/}
    grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'





    share|improve this answer






























      0














      I guess you are running your script like: script.sh dir/ or bash script.sh dir/.



      The way you pass the directory is causing the problem.



      In your script you got a grep command:



      grep -c "Author" $1/*


      If you pass the directory with tailing slash, the grep command would be run as:



      grep -c "Author" dir//*


      Example:



      grep -c "Author" dir//somefile.dat dir//someother-file.dat


      And its result would be similar to:



      dir//somefile.dat:5


      And your cut command would only return an empty string and pass it to sort:



      dir//somefile.dat:5   # < You are asking for second part which is empty


      So either run your script like: script.sh dir or change it to something like this:



      #!/bin/bash

      DIR=${1%/}
      grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'





      share|improve this answer




























        0












        0








        0







        I guess you are running your script like: script.sh dir/ or bash script.sh dir/.



        The way you pass the directory is causing the problem.



        In your script you got a grep command:



        grep -c "Author" $1/*


        If you pass the directory with tailing slash, the grep command would be run as:



        grep -c "Author" dir//*


        Example:



        grep -c "Author" dir//somefile.dat dir//someother-file.dat


        And its result would be similar to:



        dir//somefile.dat:5


        And your cut command would only return an empty string and pass it to sort:



        dir//somefile.dat:5   # < You are asking for second part which is empty


        So either run your script like: script.sh dir or change it to something like this:



        #!/bin/bash

        DIR=${1%/}
        grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'





        share|improve this answer















        I guess you are running your script like: script.sh dir/ or bash script.sh dir/.



        The way you pass the directory is causing the problem.



        In your script you got a grep command:



        grep -c "Author" $1/*


        If you pass the directory with tailing slash, the grep command would be run as:



        grep -c "Author" dir//*


        Example:



        grep -c "Author" dir//somefile.dat dir//someother-file.dat


        And its result would be similar to:



        dir//somefile.dat:5


        And your cut command would only return an empty string and pass it to sort:



        dir//somefile.dat:5   # < You are asking for second part which is empty


        So either run your script like: script.sh dir or change it to something like this:



        #!/bin/bash

        DIR=${1%/}
        grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 18 at 20:48

























        answered Mar 14 at 17:01









        RavexinaRavexina

        33.3k1488115




        33.3k1488115






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Ask Ubuntu!


            • 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%2faskubuntu.com%2fquestions%2f1125659%2fcut-not-outputting-anything%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

            數位音樂下載

            When can things happen in Etherscan, such as the picture below?

            格利澤436b