Math


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Math
# 1  
Old 05-05-2015
Math

i have file (my_file.txt) that looks like this:

Code:
 000000000000010000
 000000000000010000
 000000000000005000
 000000000000005000
 000000000000005000
 000000000000005000
 000000000000005000
 000000000000005000
 000000000000005000
 000000000000005000

all said and one, it should look like this $600.00

how do i add them up to total of $600.00 ?

can i use sed, perl or bc ? i don't even know where to start.

Thanks,

Last edited by Corona688; 05-05-2015 at 12:53 PM..
# 2  
Old 05-05-2015
Yes, lots of ways to do this. One example in Perl (not using error checking to keep it simple):

Code:
open(IN, "<my_file.txt");
while($in = <IN>)
{
   $sum += $in;
}
$sum =~ /(\d+?)(\d\d)$/;
$dollars = $1;
$cents = $2;
print "\$$dollars.$cents\n";

This User Gave Thanks to MaroonedAlien For This Post:
# 3  
Old 05-05-2015
all the choices you mention will work.

Code:
awk '
{
  val=$0 + 0
  sum=sum+val
}
END {
  l=length(sum)
  if (l > 2) 
    printf("$%s.%s\n",substr(sum,1,(l-2)),substr(sum,(l-1)))
  else
    printf("$0.%s\n",sum)
}' <my_file.txt

(smells like homework)

---------- Post updated at 10:42 AM ---------- Previous update was at 10:39 AM ----------

Quote:
Originally Posted by MaroonedAlien
Yes, lots of ways to do this. One example in Perl (not using error checking to keep it simple):

Code:
open(IN, "<my_file.txt");
while($in = <IN>)
{
   $sum += $in;
}
$sum =~ /(\d+?)(\d\d)$/;
$dollars = $1;
$cents = $2;
print "\$$dollars.$cents\n";

That's not going to handle cents properly. Just saying. 50 cents + 50 cents is not 100 cents, it's a dollar.
This User Gave Thanks to cjcox For This Post:
# 4  
Old 05-05-2015
If this is intended to be arbitrarily accurate, you should use bc. awk uses floating point numbers and may lose a penny here and there.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 05-05-2015
As in the Perl example, just use integer arithmetic and you'll be fine. Separate dollars from cents at the end of your script.
This User Gave Thanks to MaroonedAlien For This Post:
# 6  
Old 05-05-2015
Thanks y'all so much.
# 7  
Old 05-06-2015
Quote:
Originally Posted by cjcox
all the choices you mention will work.

Code:
awk '
{
  val=$0 + 0
  sum=sum+val
}
END {
  l=length(sum)
  if (l > 2) 
    printf("$%s.%s\n",substr(sum,1,(l-2)),substr(sum,(l-1)))
  else
    printf("$0.%s\n",sum)
}' <my_file.txt

Change printf after the else to use %02d instead of %s.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Linux Math Help

I am struggling with scripting this challenge a friend and I have. You have file1 and its contents is a single number you have file 2 and its contents are a different number you want to add file1 to file2 and have the output be put into file3 (3 Replies)
Discussion started by: minkyboodle
3 Replies

2. Programming

Math function with C

I have int miles, yards; float kilometers; float kilometers2; miles = 26; yards = 385; kilometers = 1.609 * (miles + yards / 1760.0); where int/float remains a float. How ever if I change it to kilometers = 1.609 * (miles + yards / 1760); ... (7 Replies)
Discussion started by: Fingerz
7 Replies

3. Shell Programming and Scripting

Math Tool

Hi all, I am new to PERL scripts, and i have made my first script which i am posting here. This math tool performs all basic arithmatic functions. #!/usr/bin/perl print "\t----------Welcome to Maths Tool-----------\n"; do { print "Enter your choice :"; print... (2 Replies)
Discussion started by: PranavEcstasy
2 Replies

4. Shell Programming and Scripting

Need help with AWK math

I am trying to do some math, so that I can compare the average of six numbers to a variable. Here is what it looks like (note that when I divide really big numbers, it isn't a real number): $ tail -n 6 named.stats | awk -F\, '{print$1}' 1141804 1140566 1139429 1134210 1084682 895045... (3 Replies)
Discussion started by: brianjb
3 Replies

5. Shell Programming and Scripting

math help

$ x=1 $ y=1.5 $ z=$((x*y)) bash: 1.5: syntax error: invalid arithmetic operator (error token is ".5") What's wrong? (2 Replies)
Discussion started by: rockbike
2 Replies

6. UNIX for Dummies Questions & Answers

math in unix

I have 2 variables a=2 b=1 i want to add a and b how do i do this in unix using just the echo command and by assigning it to a different variable like c? (13 Replies)
Discussion started by: khestoi
13 Replies

7. Programming

math.h in makefile

Hey all, How do I link the math library in a gnu make makefile? I have tried using -lm with the CFLAGS varibale - flags like -Wall and -ggdb work, but -lm does not. I am running gcc - 4.1.2 on a linux machine. (2 Replies)
Discussion started by: kermit
2 Replies

8. Programming

some math problems in C

I want to calculate secant method using C language That is a program----> #include<stdio.h> #include<math.h> #include<stdlib.h> main() { double fx(double x); double x0,x1,x2,f0,f1,f2,err; int n,i; printf("\n\n f(x) =x*x*x-5*x-7"); printf("\n\nEnter an interval in" ... (4 Replies)
Discussion started by: cdfd123
4 Replies

9. Programming

something about <math.h>

Hi, I got an easy problem for you but really difficult for me 'cause I am pretty new to this field I got header file <math.h> included in my .c file , then I write the code as below: k = sqrt(i); /* both variables k and i are int */ then I cc temp.c it says like this undefined... (4 Replies)
Discussion started by: blf0
4 Replies

10. Programming

math.h not working? o.0

Alright, umm i cant get this to work. im looking at some example and a book i have. when i try to compile my program i get an error message. ld: 0711-317 ERROR: Undefined symbol: .sqrt ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. I did #include<math.h> after my... (2 Replies)
Discussion started by: primal
2 Replies
Login or Register to Ask a Question