How to add numbers?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to add numbers?
# 1  
Old 09-10-2003
Bug How to add numbers?

Smilie
I have plain text file "tmp" which include a range of numbers(bytes), say like:
Code:
123
234
567
2434
2323
213123

How can I add them and display out.
should I use AWK, then how?
I am a newer in Bourne shell, please give me a hand, thanks a lot
# 2  
Old 09-10-2003
Without the need to sound rude or presumptuous, but this could be seen as a homework type question - which is a no-no. Please refer to this thread.

If you post what you've been able to do so far (by means of script/etc); in attempting to solve your own problem - then we can better direct/assist you.
# 3  
Old 09-10-2003
Power hi

Hi, Actually, that is a question from my study, but I just ask for a point which I can not handle, I never ask somebody to do my whole job!Smilie
What I do so far, I need to sort a range of log file, and caculate the most requested files, total byte transferred and how much percent files has been successfully access. Now I have used AWK
to cut the log file off, and put all the requested number into a tmperory file, now Just don't know any function or comand to use to add all the number together to get the sum, so could anybody to give me a hand.
Thanks
# 4  
Old 09-10-2003
The bourne shell can't do arithmetic so bourne shell scripts must rely on an external program. expr was written just for this purpose. Try this example:
a=10
b=15
c=`expr $a + $b`
echo $c

There are spaces surrounding that plus sign. expr must see it as a separate argument.

The bourne shell is very old. Modern shells have internal support for arithmetic. You should consider switching shells.

Post the script that you have so far together with a few lines of sample data and we may be able to suggest some improvements.
# 5  
Old 09-10-2003
Awk is also a natural choice to do this sort of job.

awk 'BEGIN{total=0}
{total += $1}
END{print total}' tmp

Use something like the above but before implementing it into your script get a good understanding of what it does and how it works. That is the only way you will be able to do it on your own next time.

Matt.
# 6  
Old 09-10-2003
MySQL hi, thanx!

Smilie
Hi, thanx very much, butterfm and perdo! Your suggestions are extremelly useful, now I can display the total number of byte like something below:
Code:
total_byte()
{
  awk '{print $10}' access.log.1 | sort -k 1 | sort -o /tmp/pxi_tmp1
  sum=`awk 'BEGIN{total=0}{total += $1} END{print total}' /tmp/pxi_tmp1` 
  echo "Total byte transmitted: $sum"
}
 if [ $2 = -N ]; then
         echo "Here are $3 most popular files:"
         awk '{print $7}' access.log.1 | sort -k 1 |  uniq -c | sort -ur -o /tmp/pxi_tmp
         head -${3:-10} /tmp/pxi_tmp
	 total_byte
	 total_request
         rm /tmp/pxi_tmp

I have check the fuction of AWK command, it is a big functionality tool, I have to saySmilie .
I just have another point which confused me all the time, say if I want to display the files in my tmp file exclude those .gif, .jpg, .jpeg and .png
Code:
  162 /index.html
  129 /title.gif
  22   /~bob/
  483 /~fred/index.html
  13   /~fred/links.gif
  11   /~fred/blog.jpg

(The number in the front is the result of uniq -c, just ignore it)
I would like to display like belows:
Code:
  162 /index.html
  22   /~bob/
  483 /~fred/index.html

Here is the function about this part of my whold code so far:
Code:
elif [ $2 = -I ]; then
         echo "Here are numbers of moset requested files you want:"
         awk '{print $7}' access.log.1 | sort -k 1 |  uniq -c | sort -ur -o /tmp/pxi_tmp
	 ${/tmp/tmp.txt##/*/} >> /tmp/pxi_tmp1	  
	 head -n 10 /tmp/pxi_tmp1
	 total_byte
	 total_request
	 rm /tmp/pxi_tmp1
	 rm /tmp/pxi_tmp

can anybody show me how to achieve that.Smilie
# 7  
Old 09-11-2003
Hi pnxi,

Again using AWK, this will ignore jpg and gif files. You will need to add jpeg and png files.

awk '! ($2 ~ /jpg/ || $2 ~ /gif/) {print $0}' tmp

It's worth taking the time to learn awk if you can. It is extremely powerful, particularly for the sort of thing that you are trying to do.

grep could also be used to do the job.

grep -v "[jg][pi][gf]" tmp

Matt.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Add numbers in a file

Hello, How to add numbers that are read from a file /tmp/test The content of the file look like 1234 234 432 1235 123 I read the file content in a for loop f=/tmp/test for i in `cat $f` do . . done Santhosh (11 Replies)
Discussion started by: mvsanthosh
11 Replies

2. Shell Programming and Scripting

Using Awk to Add Numbers

echo "0.1 2.0 0.4 2.0 4.3 1.0 6.0 9.0" | awk 'BEGIN {total=0} {total += $1} END {print total}' I want to add the above output from the echo command, but i can't figure this out. The output above always spits out inaccurate numbers. can someone please provide me with a one liner similar to... (4 Replies)
Discussion started by: SkySmart
4 Replies

3. Shell Programming and Scripting

Add up numbers for each day

Hi guys, Is there an easy way I can add up the numbers in column $4 when the day of the week in column $1 is equal? So in the end I want an aggregate total for each day. e.g. 01,12,2009 00000000032000 01,12,2009,0000000000002094 02,12,2009,0000000000002128 03,12,2009,0000000000002117... (3 Replies)
Discussion started by: borderblaster
3 Replies

4. UNIX for Dummies Questions & Answers

how can i add two numbers

hi, i am having one file which looks like the one below: ABC1 *** 1 4 ABC2 *** 7 12 ABC3 *** 0 34 ... (4 Replies)
Discussion started by: kripssmart
4 Replies

5. Shell Programming and Scripting

How to add numbers in a column

Hi All thanks a lot for your previous replies. I need some help here. I am writing a script to test a machine for a thereshold. It is genrating the list of number that have to be added but not displaying the added value. The script is like this #!/bin/sh... (1 Reply)
Discussion started by: asirohi
1 Replies

6. Shell Programming and Scripting

How to add numbers

Hello. I new to Shell Scripting. I have a file and here is the output of the file. 1.1M 1.1M 3.3M 149K 61K 75K 144K 135K 82K 170K 327K 2.0M 219K 165K (8 Replies)
Discussion started by: email-lalit
8 Replies

7. Shell Programming and Scripting

Add a list of numbers

I need to add a list of numbers contained in a file. For example, the file would look like this: 10 290 342 5409 I need to get a total sum of all the numbers in the list. Any ideas? Thanks! (2 Replies)
Discussion started by: TheCrunge
2 Replies

8. Shell Programming and Scripting

add line numbers

Hello.. I have got one file ... I want to add line numbers with space form starting to ending.. for example...if the file is -------------------------- sand sorcd 2345 345 recds 234 234 5687 yeres 568 988 erfg4 67 -------------------------- I need the output ... (4 Replies)
Discussion started by: esham
4 Replies

9. Shell Programming and Scripting

how do you to add numbers incrementally?

I've refined the filesystem size using awk and directed to a file name. eg, here's the content in a file called "numbers" $cat numbers 345 543 23423456 44435 546 . . how do you write a script to all these numbers to get the total? thanks a lot. (9 Replies)
Discussion started by: kiem
9 Replies

10. Shell Programming and Scripting

Add some numbers!

im using this command to return the number of links in my directory, grep -c -i -h "href" *html */*html *htm *shtml is there a way of adding these to get the total? Cheers (3 Replies)
Discussion started by: TalkShowHost
3 Replies
Login or Register to Ask a Question