Combining regex awk and bc
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
add a comment |
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
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
add a comment |
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
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
bash unix
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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
add a comment |
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
add a comment |
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
add a comment |
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
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
answered Nov 23 at 16:22
rici
151k19132197
151k19132197
add a comment |
add a comment |
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
add a comment |
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
add a comment |
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
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
answered Nov 23 at 16:06
ssemilla
3,077424
3,077424
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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