Solaris : Sort numerical values












2















I have a file with following values.



keyword1 19.02 1.69.94
keyword2 19.01 1.68.118
keyword3 19.02 1.69.119
keyword4 19.01 1.68.115
keyword5 19.02 1.69.304
keyword6 19.02 1.69.39


I want these to be sorted based on 3rd column.



In Linux, the following command using version sort works.



raj@VirtualBox:$ grep 19.02 file.txt | sort -t ' ' -k3 -V
keyword6 19.02 1.69.39
keyword1 19.02 1.69.94
keyword3 19.02 1.69.119
keyword5 19.02 1.69.304


On Unix(Solaris) the version sort seems to be missing. I searched around for working alternative on Solaris, but couldn't find one.



I can also use a solution in python.










share|improve this question

























  • Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

    – Andrew Henle
    Feb 6 at 16:03
















2















I have a file with following values.



keyword1 19.02 1.69.94
keyword2 19.01 1.68.118
keyword3 19.02 1.69.119
keyword4 19.01 1.68.115
keyword5 19.02 1.69.304
keyword6 19.02 1.69.39


I want these to be sorted based on 3rd column.



In Linux, the following command using version sort works.



raj@VirtualBox:$ grep 19.02 file.txt | sort -t ' ' -k3 -V
keyword6 19.02 1.69.39
keyword1 19.02 1.69.94
keyword3 19.02 1.69.119
keyword5 19.02 1.69.304


On Unix(Solaris) the version sort seems to be missing. I searched around for working alternative on Solaris, but couldn't find one.



I can also use a solution in python.










share|improve this question

























  • Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

    – Andrew Henle
    Feb 6 at 16:03














2












2








2


0






I have a file with following values.



keyword1 19.02 1.69.94
keyword2 19.01 1.68.118
keyword3 19.02 1.69.119
keyword4 19.01 1.68.115
keyword5 19.02 1.69.304
keyword6 19.02 1.69.39


I want these to be sorted based on 3rd column.



In Linux, the following command using version sort works.



raj@VirtualBox:$ grep 19.02 file.txt | sort -t ' ' -k3 -V
keyword6 19.02 1.69.39
keyword1 19.02 1.69.94
keyword3 19.02 1.69.119
keyword5 19.02 1.69.304


On Unix(Solaris) the version sort seems to be missing. I searched around for working alternative on Solaris, but couldn't find one.



I can also use a solution in python.










share|improve this question
















I have a file with following values.



keyword1 19.02 1.69.94
keyword2 19.01 1.68.118
keyword3 19.02 1.69.119
keyword4 19.01 1.68.115
keyword5 19.02 1.69.304
keyword6 19.02 1.69.39


I want these to be sorted based on 3rd column.



In Linux, the following command using version sort works.



raj@VirtualBox:$ grep 19.02 file.txt | sort -t ' ' -k3 -V
keyword6 19.02 1.69.39
keyword1 19.02 1.69.94
keyword3 19.02 1.69.119
keyword5 19.02 1.69.304


On Unix(Solaris) the version sort seems to be missing. I searched around for working alternative on Solaris, but couldn't find one.



I can also use a solution in python.







shell-script shell python solaris sort






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 6 at 6:32









Rui F Ribeiro

40.3k1479137




40.3k1479137










asked Feb 6 at 6:20









RajRaj

159




159













  • Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

    – Andrew Henle
    Feb 6 at 16:03



















  • Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

    – Andrew Henle
    Feb 6 at 16:03

















Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

– Andrew Henle
Feb 6 at 16:03





Note that the -V option to sort in your grep 19.02 file.txt | sort -t ' ' -k3 -V example is a non-standard, non-portable GNU extension to the POSIX sort utility.

– Andrew Henle
Feb 6 at 16:03










2 Answers
2






active

oldest

votes


















3














You could try reversing the fields and using . as the field separator:



awk '{print $3,$2,$1}' your_file |
sort -nt. -k1,1 -k2,2 -k3,3 |
awk '{print $3,$2,$1}'


Also, my solaris system has GNU sort (same as in linux) in /usr/gnu/bin/sort and I don't remember having ever installed it ;-)






share|improve this answer

































    1














    You mentioned python - the following is a python2 solution that will hopefully work in whatever python2 version exists on your Solaris machine



    lines = open('file.txt').readlines()
    lines = [l.split() for l in lines]
    lines = [line for line in lines if line[1] == "19.02"]
    def sorter(x):
    z = x[-1].split(".")
    return x[0], x[1], [int(y) for y in z]

    lines.sort(key=sorter)
    for line in lines:
    print " ".join(line)





    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%2f498971%2fsolaris-sort-numerical-values%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









      3














      You could try reversing the fields and using . as the field separator:



      awk '{print $3,$2,$1}' your_file |
      sort -nt. -k1,1 -k2,2 -k3,3 |
      awk '{print $3,$2,$1}'


      Also, my solaris system has GNU sort (same as in linux) in /usr/gnu/bin/sort and I don't remember having ever installed it ;-)






      share|improve this answer






























        3














        You could try reversing the fields and using . as the field separator:



        awk '{print $3,$2,$1}' your_file |
        sort -nt. -k1,1 -k2,2 -k3,3 |
        awk '{print $3,$2,$1}'


        Also, my solaris system has GNU sort (same as in linux) in /usr/gnu/bin/sort and I don't remember having ever installed it ;-)






        share|improve this answer




























          3












          3








          3







          You could try reversing the fields and using . as the field separator:



          awk '{print $3,$2,$1}' your_file |
          sort -nt. -k1,1 -k2,2 -k3,3 |
          awk '{print $3,$2,$1}'


          Also, my solaris system has GNU sort (same as in linux) in /usr/gnu/bin/sort and I don't remember having ever installed it ;-)






          share|improve this answer















          You could try reversing the fields and using . as the field separator:



          awk '{print $3,$2,$1}' your_file |
          sort -nt. -k1,1 -k2,2 -k3,3 |
          awk '{print $3,$2,$1}'


          Also, my solaris system has GNU sort (same as in linux) in /usr/gnu/bin/sort and I don't remember having ever installed it ;-)







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Feb 6 at 6:55

























          answered Feb 6 at 6:49









          pizdelectpizdelect

          67818




          67818

























              1














              You mentioned python - the following is a python2 solution that will hopefully work in whatever python2 version exists on your Solaris machine



              lines = open('file.txt').readlines()
              lines = [l.split() for l in lines]
              lines = [line for line in lines if line[1] == "19.02"]
              def sorter(x):
              z = x[-1].split(".")
              return x[0], x[1], [int(y) for y in z]

              lines.sort(key=sorter)
              for line in lines:
              print " ".join(line)





              share|improve this answer






























                1














                You mentioned python - the following is a python2 solution that will hopefully work in whatever python2 version exists on your Solaris machine



                lines = open('file.txt').readlines()
                lines = [l.split() for l in lines]
                lines = [line for line in lines if line[1] == "19.02"]
                def sorter(x):
                z = x[-1].split(".")
                return x[0], x[1], [int(y) for y in z]

                lines.sort(key=sorter)
                for line in lines:
                print " ".join(line)





                share|improve this answer




























                  1












                  1








                  1







                  You mentioned python - the following is a python2 solution that will hopefully work in whatever python2 version exists on your Solaris machine



                  lines = open('file.txt').readlines()
                  lines = [l.split() for l in lines]
                  lines = [line for line in lines if line[1] == "19.02"]
                  def sorter(x):
                  z = x[-1].split(".")
                  return x[0], x[1], [int(y) for y in z]

                  lines.sort(key=sorter)
                  for line in lines:
                  print " ".join(line)





                  share|improve this answer















                  You mentioned python - the following is a python2 solution that will hopefully work in whatever python2 version exists on your Solaris machine



                  lines = open('file.txt').readlines()
                  lines = [l.split() for l in lines]
                  lines = [line for line in lines if line[1] == "19.02"]
                  def sorter(x):
                  z = x[-1].split(".")
                  return x[0], x[1], [int(y) for y in z]

                  lines.sort(key=sorter)
                  for line in lines:
                  print " ".join(line)






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Feb 6 at 15:54

























                  answered Feb 6 at 7:37









                  iruvariruvar

                  11.9k62960




                  11.9k62960






























                      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%2f498971%2fsolaris-sort-numerical-values%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 make a Squid Proxy server?

                      Is this a new Fibonacci Identity?

                      Touch on Surface Book