Combining regex awk and bc












0














I have a text file containing single line numbers such as "123 2345 432 487 11". I want to take logarithm (ln) of each number and save it as a text file.
I tried but could not combine bc -l command and awk. Dou you know how can I implement it?



awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt









share|improve this question




















  • 4




    What have you tried and what exactly did not work?
    – Socowi
    Nov 22 at 22:41










  • awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
    – Yansı Cengiz
    Nov 23 at 10:20
















0














I have a text file containing single line numbers such as "123 2345 432 487 11". I want to take logarithm (ln) of each number and save it as a text file.
I tried but could not combine bc -l command and awk. Dou you know how can I implement it?



awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt









share|improve this question




















  • 4




    What have you tried and what exactly did not work?
    – Socowi
    Nov 22 at 22:41










  • awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
    – Yansı Cengiz
    Nov 23 at 10:20














0












0








0







I have a text file containing single line numbers such as "123 2345 432 487 11". I want to take logarithm (ln) of each number and save it as a text file.
I tried but could not combine bc -l command and awk. Dou you know how can I implement it?



awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt









share|improve this question















I have a text file containing single line numbers such as "123 2345 432 487 11". I want to take logarithm (ln) of each number and save it as a text file.
I tried but could not combine bc -l command and awk. Dou you know how can I implement it?



awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt






bash unix






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 at 16:06









ssemilla

3,077424




3,077424










asked Nov 22 at 22:34









Yansı Cengiz

63




63








  • 4




    What have you tried and what exactly did not work?
    – Socowi
    Nov 22 at 22:41










  • awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
    – Yansı Cengiz
    Nov 23 at 10:20














  • 4




    What have you tried and what exactly did not work?
    – Socowi
    Nov 22 at 22:41










  • awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
    – Yansı Cengiz
    Nov 23 at 10:20








4




4




What have you tried and what exactly did not work?
– Socowi
Nov 22 at 22:41




What have you tried and what exactly did not work?
– Socowi
Nov 22 at 22:41












awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
– Yansı Cengiz
Nov 23 at 10:20




awk '{for(i=1;i<=NF;i++) $i = l($i) | bc -l }' text.txt
– Yansı Cengiz
Nov 23 at 10:20












2 Answers
2






active

oldest

votes


















1














You don't really need bc since awk has a perfectly good "log" function:



awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt


If you want to see the values with more precision, use printf instead of print. Eg:



awk '{for(i=1;i<=NF;i++)printf "%.12fn",log($i)}' input.txt


If you really want to use bc, you can do this without awk by fabricating the input to bc with, for example, the shell printf command (which is similar but not the same as the awk printf command; one big difference is that the shell command repeats the format until it runs out of arguments):



printf "l(%s);n" $(<input.txt) | bc -l


or, if input.txt has a lot of data



xargs printf "l(%s);n" <input.txt | bc -l





share|improve this answer





























    0














    Try this:



    awk '{for(i=1;i<=NF;i++)system("echo l\("$i"\)|bc -l")}' input.txt > output.txt


    Which outputs:



    4.81218435537241749526
    7.76004068088037973937
    6.06842558824411031185
    6.18826412308258979072
    2.39789527279837054406





    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      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%2fstackoverflow.com%2fquestions%2f53438704%2fcombining-regex-awk-and-bc%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









      1














      You don't really need bc since awk has a perfectly good "log" function:



      awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt


      If you want to see the values with more precision, use printf instead of print. Eg:



      awk '{for(i=1;i<=NF;i++)printf "%.12fn",log($i)}' input.txt


      If you really want to use bc, you can do this without awk by fabricating the input to bc with, for example, the shell printf command (which is similar but not the same as the awk printf command; one big difference is that the shell command repeats the format until it runs out of arguments):



      printf "l(%s);n" $(<input.txt) | bc -l


      or, if input.txt has a lot of data



      xargs printf "l(%s);n" <input.txt | bc -l





      share|improve this answer


























        1














        You don't really need bc since awk has a perfectly good "log" function:



        awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt


        If you want to see the values with more precision, use printf instead of print. Eg:



        awk '{for(i=1;i<=NF;i++)printf "%.12fn",log($i)}' input.txt


        If you really want to use bc, you can do this without awk by fabricating the input to bc with, for example, the shell printf command (which is similar but not the same as the awk printf command; one big difference is that the shell command repeats the format until it runs out of arguments):



        printf "l(%s);n" $(<input.txt) | bc -l


        or, if input.txt has a lot of data



        xargs printf "l(%s);n" <input.txt | bc -l





        share|improve this answer
























          1












          1








          1






          You don't really need bc since awk has a perfectly good "log" function:



          awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt


          If you want to see the values with more precision, use printf instead of print. Eg:



          awk '{for(i=1;i<=NF;i++)printf "%.12fn",log($i)}' input.txt


          If you really want to use bc, you can do this without awk by fabricating the input to bc with, for example, the shell printf command (which is similar but not the same as the awk printf command; one big difference is that the shell command repeats the format until it runs out of arguments):



          printf "l(%s);n" $(<input.txt) | bc -l


          or, if input.txt has a lot of data



          xargs printf "l(%s);n" <input.txt | bc -l





          share|improve this answer












          You don't really need bc since awk has a perfectly good "log" function:



          awk '{for(i=1;i<=NF;i++)print log($i)}' input.txt


          If you want to see the values with more precision, use printf instead of print. Eg:



          awk '{for(i=1;i<=NF;i++)printf "%.12fn",log($i)}' input.txt


          If you really want to use bc, you can do this without awk by fabricating the input to bc with, for example, the shell printf command (which is similar but not the same as the awk printf command; one big difference is that the shell command repeats the format until it runs out of arguments):



          printf "l(%s);n" $(<input.txt) | bc -l


          or, if input.txt has a lot of data



          xargs printf "l(%s);n" <input.txt | bc -l






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 at 16:22









          rici

          151k19132197




          151k19132197

























              0














              Try this:



              awk '{for(i=1;i<=NF;i++)system("echo l\("$i"\)|bc -l")}' input.txt > output.txt


              Which outputs:



              4.81218435537241749526
              7.76004068088037973937
              6.06842558824411031185
              6.18826412308258979072
              2.39789527279837054406





              share|improve this answer


























                0














                Try this:



                awk '{for(i=1;i<=NF;i++)system("echo l\("$i"\)|bc -l")}' input.txt > output.txt


                Which outputs:



                4.81218435537241749526
                7.76004068088037973937
                6.06842558824411031185
                6.18826412308258979072
                2.39789527279837054406





                share|improve this answer
























                  0












                  0








                  0






                  Try this:



                  awk '{for(i=1;i<=NF;i++)system("echo l\("$i"\)|bc -l")}' input.txt > output.txt


                  Which outputs:



                  4.81218435537241749526
                  7.76004068088037973937
                  6.06842558824411031185
                  6.18826412308258979072
                  2.39789527279837054406





                  share|improve this answer












                  Try this:



                  awk '{for(i=1;i<=NF;i++)system("echo l\("$i"\)|bc -l")}' input.txt > output.txt


                  Which outputs:



                  4.81218435537241749526
                  7.76004068088037973937
                  6.06842558824411031185
                  6.18826412308258979072
                  2.39789527279837054406






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 23 at 16:06









                  ssemilla

                  3,077424




                  3,077424






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • 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%2fstackoverflow.com%2fquestions%2f53438704%2fcombining-regex-awk-and-bc%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

                      Trompette piccolo

                      Slow SSRS Report in dynamic grouping and multiple parameters

                      Simon Yates (cyclisme)