Sort lines according to date and time












2















I have this file which represents a calender. Each file has the exact date and time, then the name event and a note.



06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting


I need to print the events sorted with the correct order.



I have tried with grep and awk but it didn't work correctly. What can I do?










share|improve this question




















  • 1





    Can you please show what you tried with grep? What the desired output will be and so on?

    – Valentin Bajrami
    Dec 13 '18 at 18:07






  • 2





    What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

    – Kusalananda
    Dec 13 '18 at 18:07











  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

    – Dougie
    Dec 13 '18 at 18:12






  • 3





    @Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

    – Jeff Schaller
    Dec 13 '18 at 18:33






  • 3





    What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

    – Jeff Schaller
    Dec 13 '18 at 18:34


















2















I have this file which represents a calender. Each file has the exact date and time, then the name event and a note.



06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting


I need to print the events sorted with the correct order.



I have tried with grep and awk but it didn't work correctly. What can I do?










share|improve this question




















  • 1





    Can you please show what you tried with grep? What the desired output will be and so on?

    – Valentin Bajrami
    Dec 13 '18 at 18:07






  • 2





    What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

    – Kusalananda
    Dec 13 '18 at 18:07











  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

    – Dougie
    Dec 13 '18 at 18:12






  • 3





    @Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

    – Jeff Schaller
    Dec 13 '18 at 18:33






  • 3





    What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

    – Jeff Schaller
    Dec 13 '18 at 18:34
















2












2








2


1






I have this file which represents a calender. Each file has the exact date and time, then the name event and a note.



06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting


I need to print the events sorted with the correct order.



I have tried with grep and awk but it didn't work correctly. What can I do?










share|improve this question
















I have this file which represents a calender. Each file has the exact date and time, then the name event and a note.



06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting


I need to print the events sorted with the correct order.



I have tried with grep and awk but it didn't work correctly. What can I do?







awk grep date sort






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 13 '18 at 19:19









jimmij

30.9k870105




30.9k870105










asked Dec 13 '18 at 18:01









StillLearningStillLearning

112




112








  • 1





    Can you please show what you tried with grep? What the desired output will be and so on?

    – Valentin Bajrami
    Dec 13 '18 at 18:07






  • 2





    What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

    – Kusalananda
    Dec 13 '18 at 18:07











  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

    – Dougie
    Dec 13 '18 at 18:12






  • 3





    @Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

    – Jeff Schaller
    Dec 13 '18 at 18:33






  • 3





    What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

    – Jeff Schaller
    Dec 13 '18 at 18:34
















  • 1





    Can you please show what you tried with grep? What the desired output will be and so on?

    – Valentin Bajrami
    Dec 13 '18 at 18:07






  • 2





    What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

    – Kusalananda
    Dec 13 '18 at 18:07











  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

    – Dougie
    Dec 13 '18 at 18:12






  • 3





    @Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

    – Jeff Schaller
    Dec 13 '18 at 18:33






  • 3





    What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

    – Jeff Schaller
    Dec 13 '18 at 18:34










1




1





Can you please show what you tried with grep? What the desired output will be and so on?

– Valentin Bajrami
Dec 13 '18 at 18:07





Can you please show what you tried with grep? What the desired output will be and so on?

– Valentin Bajrami
Dec 13 '18 at 18:07




2




2





What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

– Kusalananda
Dec 13 '18 at 18:07





What is the correct order, by timestamp or by name? If by timestamp, this would have been so much easier if you had only used YYYY-MM-DD dates...

– Kusalananda
Dec 13 '18 at 18:07













Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

– Dougie
Dec 13 '18 at 18:12





Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file

– Dougie
Dec 13 '18 at 18:12




3




3





@Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

– Jeff Schaller
Dec 13 '18 at 18:33





@Dougie, please try to restrain yourself from "Answering questions in comments" (as the stock text for comments says). If you have a solution, please consider posting an Answer, instead. Thank you!

– Jeff Schaller
Dec 13 '18 at 18:33




3




3





What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

– Jeff Schaller
Dec 13 '18 at 18:34







What's an example of an activity that happens before 10 am? Is it 06-12-2016,09:00,teatime or is it 06-12-2016,9:00,teatime?

– Jeff Schaller
Dec 13 '18 at 18:34












2 Answers
2






active

oldest

votes


















4














I believe the simplest command is



sort -t- -k3.1,3.4 -k2,2 file


This sorts on four characters of the third field and resolve ties by sorting on the second field. If ties are still not solved the order will be determined automatically by comparing all other fields starting from the first one.



Notice that all sorting is done alphabetically because numbers are positive integers so adding additional n doesn't matter.



Test sample:



06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:11,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
08-08-2019,13:09,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting


Sorted result:



06-12-2016,12:00,gym,leg day
05-12-2017,14:45,songwriting
23-03-2018,16:47,dance class
05-04-2018,12:09,gym,hands
05-04-2019,14:07,gym,hands
25-04-2019,13:29,dance class
08-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:11,movies,horror





share|improve this answer































    2














    One way would be to manually pick out all of the sort fields:



    sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input


    This splits the lines up based on comma-separated fields, then uses the positions of the year, month, day, hour, and minutes to sort numerically. Sample output:



    06-12-2016,12:00,gym,leg day
    05-12-2017,14:45,songwriting
    23-03-2018,16:47,dance class
    05-04-2018,12:09,gym,hands
    05-04-2019,14:07,gym,hands
    25-04-2019,13:29,dance class
    09-08-2019,13:08,movies,horror





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


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f487823%2fsort-lines-according-to-date-and-time%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      4














      I believe the simplest command is



      sort -t- -k3.1,3.4 -k2,2 file


      This sorts on four characters of the third field and resolve ties by sorting on the second field. If ties are still not solved the order will be determined automatically by comparing all other fields starting from the first one.



      Notice that all sorting is done alphabetically because numbers are positive integers so adding additional n doesn't matter.



      Test sample:



      06-12-2016,12:00,gym,leg day
      05-04-2018,12:09,gym,hands
      09-08-2019,13:11,movies,horror
      09-08-2019,13:09,movies,horror
      09-08-2019,13:08,movies,horror
      08-08-2019,13:09,movies,horror
      05-04-2019,14:07,gym,hands
      23-03-2018,16:47,dance class
      25-04-2019,13:29,dance class
      05-12-2017,14:45,songwriting


      Sorted result:



      06-12-2016,12:00,gym,leg day
      05-12-2017,14:45,songwriting
      23-03-2018,16:47,dance class
      05-04-2018,12:09,gym,hands
      05-04-2019,14:07,gym,hands
      25-04-2019,13:29,dance class
      08-08-2019,13:09,movies,horror
      09-08-2019,13:08,movies,horror
      09-08-2019,13:09,movies,horror
      09-08-2019,13:11,movies,horror





      share|improve this answer




























        4














        I believe the simplest command is



        sort -t- -k3.1,3.4 -k2,2 file


        This sorts on four characters of the third field and resolve ties by sorting on the second field. If ties are still not solved the order will be determined automatically by comparing all other fields starting from the first one.



        Notice that all sorting is done alphabetically because numbers are positive integers so adding additional n doesn't matter.



        Test sample:



        06-12-2016,12:00,gym,leg day
        05-04-2018,12:09,gym,hands
        09-08-2019,13:11,movies,horror
        09-08-2019,13:09,movies,horror
        09-08-2019,13:08,movies,horror
        08-08-2019,13:09,movies,horror
        05-04-2019,14:07,gym,hands
        23-03-2018,16:47,dance class
        25-04-2019,13:29,dance class
        05-12-2017,14:45,songwriting


        Sorted result:



        06-12-2016,12:00,gym,leg day
        05-12-2017,14:45,songwriting
        23-03-2018,16:47,dance class
        05-04-2018,12:09,gym,hands
        05-04-2019,14:07,gym,hands
        25-04-2019,13:29,dance class
        08-08-2019,13:09,movies,horror
        09-08-2019,13:08,movies,horror
        09-08-2019,13:09,movies,horror
        09-08-2019,13:11,movies,horror





        share|improve this answer


























          4












          4








          4







          I believe the simplest command is



          sort -t- -k3.1,3.4 -k2,2 file


          This sorts on four characters of the third field and resolve ties by sorting on the second field. If ties are still not solved the order will be determined automatically by comparing all other fields starting from the first one.



          Notice that all sorting is done alphabetically because numbers are positive integers so adding additional n doesn't matter.



          Test sample:



          06-12-2016,12:00,gym,leg day
          05-04-2018,12:09,gym,hands
          09-08-2019,13:11,movies,horror
          09-08-2019,13:09,movies,horror
          09-08-2019,13:08,movies,horror
          08-08-2019,13:09,movies,horror
          05-04-2019,14:07,gym,hands
          23-03-2018,16:47,dance class
          25-04-2019,13:29,dance class
          05-12-2017,14:45,songwriting


          Sorted result:



          06-12-2016,12:00,gym,leg day
          05-12-2017,14:45,songwriting
          23-03-2018,16:47,dance class
          05-04-2018,12:09,gym,hands
          05-04-2019,14:07,gym,hands
          25-04-2019,13:29,dance class
          08-08-2019,13:09,movies,horror
          09-08-2019,13:08,movies,horror
          09-08-2019,13:09,movies,horror
          09-08-2019,13:11,movies,horror





          share|improve this answer













          I believe the simplest command is



          sort -t- -k3.1,3.4 -k2,2 file


          This sorts on four characters of the third field and resolve ties by sorting on the second field. If ties are still not solved the order will be determined automatically by comparing all other fields starting from the first one.



          Notice that all sorting is done alphabetically because numbers are positive integers so adding additional n doesn't matter.



          Test sample:



          06-12-2016,12:00,gym,leg day
          05-04-2018,12:09,gym,hands
          09-08-2019,13:11,movies,horror
          09-08-2019,13:09,movies,horror
          09-08-2019,13:08,movies,horror
          08-08-2019,13:09,movies,horror
          05-04-2019,14:07,gym,hands
          23-03-2018,16:47,dance class
          25-04-2019,13:29,dance class
          05-12-2017,14:45,songwriting


          Sorted result:



          06-12-2016,12:00,gym,leg day
          05-12-2017,14:45,songwriting
          23-03-2018,16:47,dance class
          05-04-2018,12:09,gym,hands
          05-04-2019,14:07,gym,hands
          25-04-2019,13:29,dance class
          08-08-2019,13:09,movies,horror
          09-08-2019,13:08,movies,horror
          09-08-2019,13:09,movies,horror
          09-08-2019,13:11,movies,horror






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 13 '18 at 19:14









          jimmijjimmij

          30.9k870105




          30.9k870105

























              2














              One way would be to manually pick out all of the sort fields:



              sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input


              This splits the lines up based on comma-separated fields, then uses the positions of the year, month, day, hour, and minutes to sort numerically. Sample output:



              06-12-2016,12:00,gym,leg day
              05-12-2017,14:45,songwriting
              23-03-2018,16:47,dance class
              05-04-2018,12:09,gym,hands
              05-04-2019,14:07,gym,hands
              25-04-2019,13:29,dance class
              09-08-2019,13:08,movies,horror





              share|improve this answer




























                2














                One way would be to manually pick out all of the sort fields:



                sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input


                This splits the lines up based on comma-separated fields, then uses the positions of the year, month, day, hour, and minutes to sort numerically. Sample output:



                06-12-2016,12:00,gym,leg day
                05-12-2017,14:45,songwriting
                23-03-2018,16:47,dance class
                05-04-2018,12:09,gym,hands
                05-04-2019,14:07,gym,hands
                25-04-2019,13:29,dance class
                09-08-2019,13:08,movies,horror





                share|improve this answer


























                  2












                  2








                  2







                  One way would be to manually pick out all of the sort fields:



                  sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input


                  This splits the lines up based on comma-separated fields, then uses the positions of the year, month, day, hour, and minutes to sort numerically. Sample output:



                  06-12-2016,12:00,gym,leg day
                  05-12-2017,14:45,songwriting
                  23-03-2018,16:47,dance class
                  05-04-2018,12:09,gym,hands
                  05-04-2019,14:07,gym,hands
                  25-04-2019,13:29,dance class
                  09-08-2019,13:08,movies,horror





                  share|improve this answer













                  One way would be to manually pick out all of the sort fields:



                  sort -t, -k 1.7,1.10n -k 1.4,1.5n -k 1.1,1.2n -k 2.1,2.2n -k 2.4,2.5n input


                  This splits the lines up based on comma-separated fields, then uses the positions of the year, month, day, hour, and minutes to sort numerically. Sample output:



                  06-12-2016,12:00,gym,leg day
                  05-12-2017,14:45,songwriting
                  23-03-2018,16:47,dance class
                  05-04-2018,12:09,gym,hands
                  05-04-2019,14:07,gym,hands
                  25-04-2019,13:29,dance class
                  09-08-2019,13:08,movies,horror






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Dec 13 '18 at 18:39









                  Jeff SchallerJeff Schaller

                  39.3k1054125




                  39.3k1054125






























                      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.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f487823%2fsort-lines-according-to-date-and-time%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

                      Bressuire

                      Cabo Verde

                      Gyllenstierna