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 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 at 18:07










  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
    – Dougie
    Dec 13 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 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 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 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 at 18:07










  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
    – Dougie
    Dec 13 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 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 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 at 19:19









jimmij

30.7k870103




30.7k870103










asked Dec 13 at 18:01









user312851

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 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 at 18:07










  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
    – Dougie
    Dec 13 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 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 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 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 at 18:07










  • Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
    – Dougie
    Dec 13 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 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 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 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 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 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 at 18:07












Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
– Dougie
Dec 13 at 18:12




Try a unix sort sort -n -t- -k 3.1 -k 2.1 -k 1.1 file
– Dougie
Dec 13 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 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 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 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 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 at 19:14









          jimmij

          30.7k870103




          30.7k870103

























              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 at 18:39









                  Jeff Schaller

                  38.3k1053125




                  38.3k1053125






























                      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%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

                      Список кардиналов, возведённых папой римским Каликстом III

                      Deduzione

                      Mysql.sock missing - “Can't connect to local MySQL server through socket”