sum(col) finding from a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sum(col) finding from a file
# 8  
Old 04-23-2008
Why don't you use awk all the way? It's quite capable of summing the columns, too.

Code:
awk -F '|' '{ area += $2; population += $3; }
END { print "area: " area; print "population: " population }' file

If you need to use the sums in subsequent processing then print them in some more machine-readble format. Maybe something like

Code:
set -- `awk '... whatever ... END { print area population }'`
echo area is $1
echo population is $2

# 9  
Old 04-23-2008
sum(col)

I have an file a.sh which has

USSR|10|20|Asia
Canada|20|30|North America
China|30|40|Asia

I tried with era code, but is is giving wrong output

`awk -F '|' '{ area+=$2; total+=$3; }
END { print "area: " area; print "total: " total }'` /path/a.sh

awk: syntax error near line 1
awk: bailing out near line 1
/path/a.sh: USSR: not found
/path/a.sh: 10: not found
/path/a.sh: 20: not found
/path/a.sh: Asia: not found
/path/a.sh[2]: Canada: not found
/path/a.sh[2]: 30: not found
/path/a.sh[2]: 20: not found
/path/a.sh[2]: North: not found
/path/a.sh[3]: China: not found
/path/a.sh[3]: 40: not found
/path/a.sh[3]: 30: not found
/path/a.sh[3]: Asia: not found
echo $area
40
echo $total
150

It gave the following output. It is supposed to give the output as 60 and 90It has some error also. Pl help me

Thanks
Babu
# 10  
Old 04-23-2008
You forgot the "set --" which needs to go before the backticks. It causes the positional parameters to be filled with the output from the command in the backticks. (So $1 is whatever awk echos in the first field, and $2 is the second field in the output, etc.)

Code:
 vnix$ awk -F '|' '{ area += $2; population += $3; }
> END { print "area: " area; print "population: " population }' <<HERE
> USSR|10|20|Asia
> Canada|20|30|North America
> China|30|40|Asia
> HERE
area: 60
population: 90
vnix$ 
vnix$ 
vnix$ set -- `awk -F '|' '{ area+=$2; total+=$3; }
END { print "area: " area; print "total: " total }' <<HERE
> USSR|10|20|Asia
> Canada|20|30|North America
> China|30|40|Asia
> HERE
> ` # <- note closing backtick here
vnix$ echo $1
area:
vnix$ echo $2
60
vnix$ echo $4
90

You need to use either one or the other, not mix the two variants I posted.

Last edited by era; 04-23-2008 at 08:15 AM.. Reason: Example output
# 11  
Old 04-24-2008
Hi

I have a FILE a.sh which has

USSR |10 |20 |Asia
Canada|20.4|30 |North America
China |30 |40.4|Asia

I have written a shell program follows

FILE=/path/a.sh
var=0
credit=0
var1=0
debit=0

for var in `awk -F'|' '{print $2}' $FILE`
do
credit=$(($credit+$var))
done
echo $credit

for var in `awk -F'|' '{print $3}' $FILE`
do
debit=$(($debit+$var1))
done
echo $debit

I am NOT getting the DECIMAL VALUES i am getting 60 AND 90 AS the output

But i want the output AS 60.40 AND 90.40. Need your gr8 help

Thanks
babu
# 12  
Old 04-24-2008
shell arithmetic is integers only, use awk instead, you have a script already.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help in finding sum for values in 2 different fields

Hi there, I have 2 files in following format cat file_1 Storage Group Name: aaaa HBA UID SP Name SPPort ------- ------- ------ 0 21 Storage Group Name: bbbb HBA UID... (2 Replies)
Discussion started by: jpkumar10
2 Replies

2. Shell Programming and Scripting

Modifying col values based on another col

Hi, Please help with this. I have several excel files (with and .xlsx format) with 10-15 columns each. They all have the same type of data but the columns are not ordered in the same way. Here is a 3 column example. What I want to do add the alphabet from column 2 to column 3, provided... (9 Replies)
Discussion started by: newbie83
9 Replies

3. Shell Programming and Scripting

Run a program-print parameters to output file-replace op file contents with max 4th col

Hi Friends, This is the only solution to my task. So, any help is highly appreciated. I have a file cat input1.bed chr1 100 200 abc chr1 120 300 def chr1 145 226 ghi chr2 567 600 unix Now, I have another file by name input2.bed (This file is a binary file not readable by the... (7 Replies)
Discussion started by: jacobs.smith
7 Replies

4. Shell Programming and Scripting

Printing from col x to end of line, except last col

Hello, I have some tab delimited data and I need to move the last col. I could hard code it, awk '{ print $1,$NF,$2,$3,$4,etc }' infile > outfile but it would be nice to know the syntax to print a range cols. I know in cut you can do, cut -f 1,4-8,11- to print fields 1,... (8 Replies)
Discussion started by: LMHmedchem
8 Replies

5. UNIX for Advanced & Expert Users

Print line based on highest value of col (B) and repetion of values in col (A)

Hello everyone, I am writing a script to process data from the ATP world tour. I have a file which contains: t=540 y=2011 r=1 p=N409 t=540 y=2011 r=2 p=N409 t=540 y=2011 r=3 p=N409 t=540 y=2011 r=4 p=N409 t=520 y=2011 r=1 p=N409 t=520 y=2011 r=2 p=N409 t=520 y=2011 r=3 p=N409 The... (4 Replies)
Discussion started by: imahmoud
4 Replies

6. Shell Programming and Scripting

how to add new col in a file

Hi, Experts, I have a requirement as following: my source file: a a a b b c c c c I need add one more colume as following: 1 a 2 a 3 a 1 b 2 b 1 c 2 c (4 Replies)
Discussion started by: ken002
4 Replies

7. Shell Programming and Scripting

Finding Sum of Occurrances

Hello friends, I have a database export and with this export i need to find some statistics which is required. I take the export of a table with only 3 columns like this: 2nd 3rd 12th 123 05.11.2010 09:27 0 124 05.11.2010 09:28 0 125 05.11.2010 09:34 1 126 05.11.2010 09:39 0... (5 Replies)
Discussion started by: EAGL€
5 Replies

8. Shell Programming and Scripting

Finding the sum of two numbers

cat *.out |grep "<some text>" | awk '{print $6}' For ex,This will reutrn me 11111 22222 is it possible to add these two numbers in the above given command itself?I can write this to a file and find the sum. But I prefer to this calculation in the above given line itself. Any... (3 Replies)
Discussion started by: prasperl
3 Replies

9. Shell Programming and Scripting

Compare - 1st col of file

Hi, I have two different files, one has two columns and other has only one column. I would like to compare the first column in the first file with the data in the second file and write a third file with the data that is not present is not common to them. First file:... (26 Replies)
Discussion started by: swame_sp
26 Replies

10. Ubuntu

Match col 1 of File 1 with col 1 File 2 and create a 3rd file

Hello, I have a 1.6 GB file that I would like to modify by matching some ids in col1 with the ids in col 1 of file2.txt and save the results into a 3rd file. For example: File 1 has 1411 rows, I ignore how many columns it has (thousands) File 2 has 311 rows, 1 column Would like to... (7 Replies)
Discussion started by: sogi
7 Replies
Login or Register to Ask a Question