Manipulate scientific format without the “e”












0















I am trying to manipulate a file which contains numbers in scientific notation, but without the e symbol, i.e. 1.2e+3 is written as 1.2+3.



The easiest thing I thought to doing with awk was to replace + with e+, using the gsub function and do my calculation in the new file. The same goes for the minus case. So a simple fix could be done using the following command



awk '{gsub("+", "e+", $1); print $1, $2, $3, $4, $5}' file_in


and do the same in all the columns.



However the file contains also negative numbers which makes thing a bit complicated. A sample file can be seen bellow



 1.056000+0 5.000000-1 2.454400-3 2.914800-2 8.141500-6
2.043430+1 5.000000-1 2.750500-3 2.698100-2-2.034300-4
3.829842+1 5.000000-1 1.969923-2 2.211364-2 9.499900-6
4.168521+1 5.000000-1 1.601262-2 3.030919-2-3.372000-6
6.661784+1 5.000000-1 5.250575-2 3.443669-2 2.585500-5
7.278104+1 5.000000-1 2.137055-2 2.601701-2 8.999800-5
9.077287+1 5.000000-1 1.320498-2 2.961020-2-1.011600-5
9.248130+1 5.000000-1 3.069610-3 2.786329-2-6.317000-5
1.049935+2 5.000000-1 4.218794-2 3.321955-2-5.097000-6
1.216283+2 5.000000-1 1.432105-2 3.077165-2 4.300300-5


Any idea on how to manipulate and calculations with such a file?










share|improve this question





























    0















    I am trying to manipulate a file which contains numbers in scientific notation, but without the e symbol, i.e. 1.2e+3 is written as 1.2+3.



    The easiest thing I thought to doing with awk was to replace + with e+, using the gsub function and do my calculation in the new file. The same goes for the minus case. So a simple fix could be done using the following command



    awk '{gsub("+", "e+", $1); print $1, $2, $3, $4, $5}' file_in


    and do the same in all the columns.



    However the file contains also negative numbers which makes thing a bit complicated. A sample file can be seen bellow



     1.056000+0 5.000000-1 2.454400-3 2.914800-2 8.141500-6
    2.043430+1 5.000000-1 2.750500-3 2.698100-2-2.034300-4
    3.829842+1 5.000000-1 1.969923-2 2.211364-2 9.499900-6
    4.168521+1 5.000000-1 1.601262-2 3.030919-2-3.372000-6
    6.661784+1 5.000000-1 5.250575-2 3.443669-2 2.585500-5
    7.278104+1 5.000000-1 2.137055-2 2.601701-2 8.999800-5
    9.077287+1 5.000000-1 1.320498-2 2.961020-2-1.011600-5
    9.248130+1 5.000000-1 3.069610-3 2.786329-2-6.317000-5
    1.049935+2 5.000000-1 4.218794-2 3.321955-2-5.097000-6
    1.216283+2 5.000000-1 1.432105-2 3.077165-2 4.300300-5


    Any idea on how to manipulate and calculations with such a file?










    share|improve this question



























      0












      0








      0








      I am trying to manipulate a file which contains numbers in scientific notation, but without the e symbol, i.e. 1.2e+3 is written as 1.2+3.



      The easiest thing I thought to doing with awk was to replace + with e+, using the gsub function and do my calculation in the new file. The same goes for the minus case. So a simple fix could be done using the following command



      awk '{gsub("+", "e+", $1); print $1, $2, $3, $4, $5}' file_in


      and do the same in all the columns.



      However the file contains also negative numbers which makes thing a bit complicated. A sample file can be seen bellow



       1.056000+0 5.000000-1 2.454400-3 2.914800-2 8.141500-6
      2.043430+1 5.000000-1 2.750500-3 2.698100-2-2.034300-4
      3.829842+1 5.000000-1 1.969923-2 2.211364-2 9.499900-6
      4.168521+1 5.000000-1 1.601262-2 3.030919-2-3.372000-6
      6.661784+1 5.000000-1 5.250575-2 3.443669-2 2.585500-5
      7.278104+1 5.000000-1 2.137055-2 2.601701-2 8.999800-5
      9.077287+1 5.000000-1 1.320498-2 2.961020-2-1.011600-5
      9.248130+1 5.000000-1 3.069610-3 2.786329-2-6.317000-5
      1.049935+2 5.000000-1 4.218794-2 3.321955-2-5.097000-6
      1.216283+2 5.000000-1 1.432105-2 3.077165-2 4.300300-5


      Any idea on how to manipulate and calculations with such a file?










      share|improve this question
















      I am trying to manipulate a file which contains numbers in scientific notation, but without the e symbol, i.e. 1.2e+3 is written as 1.2+3.



      The easiest thing I thought to doing with awk was to replace + with e+, using the gsub function and do my calculation in the new file. The same goes for the minus case. So a simple fix could be done using the following command



      awk '{gsub("+", "e+", $1); print $1, $2, $3, $4, $5}' file_in


      and do the same in all the columns.



      However the file contains also negative numbers which makes thing a bit complicated. A sample file can be seen bellow



       1.056000+0 5.000000-1 2.454400-3 2.914800-2 8.141500-6
      2.043430+1 5.000000-1 2.750500-3 2.698100-2-2.034300-4
      3.829842+1 5.000000-1 1.969923-2 2.211364-2 9.499900-6
      4.168521+1 5.000000-1 1.601262-2 3.030919-2-3.372000-6
      6.661784+1 5.000000-1 5.250575-2 3.443669-2 2.585500-5
      7.278104+1 5.000000-1 2.137055-2 2.601701-2 8.999800-5
      9.077287+1 5.000000-1 1.320498-2 2.961020-2-1.011600-5
      9.248130+1 5.000000-1 3.069610-3 2.786329-2-6.317000-5
      1.049935+2 5.000000-1 4.218794-2 3.321955-2-5.097000-6
      1.216283+2 5.000000-1 1.432105-2 3.077165-2 4.300300-5


      Any idea on how to manipulate and calculations with such a file?







      awk files






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 5 mins ago









      Olorin

      3,4431418




      3,4431418










      asked 11 mins ago









      ThanosThanos

      175111




      175111






















          1 Answer
          1






          active

          oldest

          votes


















          2














          Is this output correct?



           1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
          2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
          3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
          4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
          6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
          7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
          9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
          9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
          1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
          1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5


          Code:



          perl -lne 's/(.d+)(+|-)/1e2/g; print' sample




          share
























          • Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

            – Thanos
            3 mins ago











          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%2f504412%2fmanipulate-scientific-format-without-the-e%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









          2














          Is this output correct?



           1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
          2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
          3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
          4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
          6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
          7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
          9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
          9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
          1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
          1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5


          Code:



          perl -lne 's/(.d+)(+|-)/1e2/g; print' sample




          share
























          • Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

            – Thanos
            3 mins ago
















          2














          Is this output correct?



           1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
          2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
          3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
          4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
          6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
          7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
          9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
          9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
          1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
          1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5


          Code:



          perl -lne 's/(.d+)(+|-)/1e2/g; print' sample




          share
























          • Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

            – Thanos
            3 mins ago














          2












          2








          2







          Is this output correct?



           1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
          2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
          3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
          4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
          6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
          7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
          9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
          9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
          1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
          1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5


          Code:



          perl -lne 's/(.d+)(+|-)/1e2/g; print' sample




          share













          Is this output correct?



           1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
          2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
          3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
          4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
          6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
          7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
          9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
          9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
          1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
          1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5


          Code:



          perl -lne 's/(.d+)(+|-)/1e2/g; print' sample





          share











          share


          share










          answered 4 mins ago









          TomaszTomasz

          10k52966




          10k52966













          • Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

            – Thanos
            3 mins ago



















          • Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

            – Thanos
            3 mins ago

















          Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

          – Thanos
          3 mins ago





          Thank you very much for the answer! Yes it seems correct!! Can you explain what you did, for future reference?

          – Thanos
          3 mins ago


















          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%2f504412%2fmanipulate-scientific-format-without-the-e%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

          Loup dans la culture

          How to solve the problem of ntp “Unable to contact time server” from KDE?

          ASUS Zenbook UX433/UX333 — Configure Touchpad-embedded numpad on Linux