how to sum variables from file in bash
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
Hello I need to sum numbers from a file line by line.
The file:
1.0
0.46
0.67
I want to sum, then divide 3.
I currently have:
while IFS= read -r var
do
x=$(($var + $x)) | bc -l
done < "file.txt"
echo "$x / 3"
My error:
-bash: 1.0 + 0: syntax error: invalid arithmetic operator (error token is ".0 + 0")
bash arithmetic
add a comment |
Hello I need to sum numbers from a file line by line.
The file:
1.0
0.46
0.67
I want to sum, then divide 3.
I currently have:
while IFS= read -r var
do
x=$(($var + $x)) | bc -l
done < "file.txt"
echo "$x / 3"
My error:
-bash: 1.0 + 0: syntax error: invalid arithmetic operator (error token is ".0 + 0")
bash arithmetic
add a comment |
Hello I need to sum numbers from a file line by line.
The file:
1.0
0.46
0.67
I want to sum, then divide 3.
I currently have:
while IFS= read -r var
do
x=$(($var + $x)) | bc -l
done < "file.txt"
echo "$x / 3"
My error:
-bash: 1.0 + 0: syntax error: invalid arithmetic operator (error token is ".0 + 0")
bash arithmetic
Hello I need to sum numbers from a file line by line.
The file:
1.0
0.46
0.67
I want to sum, then divide 3.
I currently have:
while IFS= read -r var
do
x=$(($var + $x)) | bc -l
done < "file.txt"
echo "$x / 3"
My error:
-bash: 1.0 + 0: syntax error: invalid arithmetic operator (error token is ".0 + 0")
bash arithmetic
bash arithmetic
edited 2 hours ago
Jesse_b
14.7k33574
14.7k33574
asked 2 hours ago
AhmetMelihBaşbuğAhmetMelihBaşbuğ
1225
1225
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
bash/shell arithmetic can't handle floating point arithmetic. You can accomplish your task using awk
:
awk '{sum= sum+$1} END {print sum/3}' file
This will read through your file and add each line to sum
then after it completes reading the file it will print sum
divided by 3.
add a comment |
Just for fun
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
add a comment |
Try this:
x=0
while IFS= read -r var; do
x="$(echo "$var + $x" | bc -l)"
done < "file.txt"
echo "$x / 3" | bc -l
x
was not defined.- You need an
echo
forbc
to work (not mixed bash arithmetic).
add a comment |
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
});
}
});
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%2funix.stackexchange.com%2fquestions%2f515923%2fhow-to-sum-variables-from-file-in-bash%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
bash/shell arithmetic can't handle floating point arithmetic. You can accomplish your task using awk
:
awk '{sum= sum+$1} END {print sum/3}' file
This will read through your file and add each line to sum
then after it completes reading the file it will print sum
divided by 3.
add a comment |
bash/shell arithmetic can't handle floating point arithmetic. You can accomplish your task using awk
:
awk '{sum= sum+$1} END {print sum/3}' file
This will read through your file and add each line to sum
then after it completes reading the file it will print sum
divided by 3.
add a comment |
bash/shell arithmetic can't handle floating point arithmetic. You can accomplish your task using awk
:
awk '{sum= sum+$1} END {print sum/3}' file
This will read through your file and add each line to sum
then after it completes reading the file it will print sum
divided by 3.
bash/shell arithmetic can't handle floating point arithmetic. You can accomplish your task using awk
:
awk '{sum= sum+$1} END {print sum/3}' file
This will read through your file and add each line to sum
then after it completes reading the file it will print sum
divided by 3.
answered 2 hours ago
Jesse_bJesse_b
14.7k33574
14.7k33574
add a comment |
add a comment |
Just for fun
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
add a comment |
Just for fun
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
add a comment |
Just for fun
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
Just for fun
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
answered 1 hour ago
steeldriversteeldriver
38.3k45489
38.3k45489
add a comment |
add a comment |
Try this:
x=0
while IFS= read -r var; do
x="$(echo "$var + $x" | bc -l)"
done < "file.txt"
echo "$x / 3" | bc -l
x
was not defined.- You need an
echo
forbc
to work (not mixed bash arithmetic).
add a comment |
Try this:
x=0
while IFS= read -r var; do
x="$(echo "$var + $x" | bc -l)"
done < "file.txt"
echo "$x / 3" | bc -l
x
was not defined.- You need an
echo
forbc
to work (not mixed bash arithmetic).
add a comment |
Try this:
x=0
while IFS= read -r var; do
x="$(echo "$var + $x" | bc -l)"
done < "file.txt"
echo "$x / 3" | bc -l
x
was not defined.- You need an
echo
forbc
to work (not mixed bash arithmetic).
Try this:
x=0
while IFS= read -r var; do
x="$(echo "$var + $x" | bc -l)"
done < "file.txt"
echo "$x / 3" | bc -l
x
was not defined.- You need an
echo
forbc
to work (not mixed bash arithmetic).
answered 2 hours ago
FreddyFreddy
2,241210
2,241210
add a comment |
add a comment |
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.
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%2funix.stackexchange.com%2fquestions%2f515923%2fhow-to-sum-variables-from-file-in-bash%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