Add a particular column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Add a particular column
# 1  
Old 10-12-2009
Add a particular column

hi,
My file looks like this.

010,09102009,abc,30
010,09112009,abc,20
010,08102009,edf,40
010,09152009,edf,60
020,09102009,abc,30
020,09112009,abc,60

this continus like this , I need to add the last coloumn, based on the first coloumn and 3rd coloumn. If the first and third coloumn, are same in some other row then the last coloumn will add up. But the data is hugh 2 to 3 gb file so i cannot hard code the first and 3rd coloumn to add the last coloumn.
I want to check if the first and 3rd coloumn in some other rows are same then add up the last coloumn.
please suggest me a script.

like
if first row in the file above 010 and abc then add the last coloumn 30+20=50
# 2  
Old 10-12-2009
If I understand your request correctly, this should do the trick:

Code:
awk -F, -v OFS="," '{a[$1OFS$3]+=$4}END{for(i in a) print i,a[i]}' file

# 3  
Old 10-12-2009
Code:
awk -F, '{$NF=($1FS$3==v)?$NF FS ($NF+w):$NF;v=$1FS$3;w=$4}1' OFS="," file

# 4  
Old 10-12-2009
perl:
Code:
my %hash;
open FH,"<a.txt";
while(<FH>){
  chomp;
  my @tmp = split(",",$_);
  my $key=$tmp[0].$tmp[2];
  $hash{$key}->{sum}+=$tmp[3];
  $hash{$key}->{val}=$hash{$key}->{val}.$_."\n";
}
foreach my $key(keys %hash){
 my @tmp=split("\n",$hash{$key}->{val});
 map {s/[0-9]+$/$hash{$key}->{sum}/}  @tmp;
 print join "\n", @tmp;
print "\n";
}

# 5  
Old 10-13-2009
hi,
To the post of Ripat :

awk -F, -v OFS="," '{a[$1OFS$3]+=$4}END{for(i in a) print i,a[i]}' file

I am unable to understand this how $1OFS$3 is the index of the array. If the full command is explained then it will be helpful.
# 6  
Old 10-13-2009
The solutions above are just guess work as you didn't post the required output.

{a[$1OFS$3]+=$4} for every line the array "a" indexed by "Col1,Col3" is increased by the value of Col4. OFS being the Output Field Separator, the comma in this case. For your first line, a[10,abc]==30. Second line a[10,abc]==50 etc...

END{for(i in a) print i,a[i]} when all lines have been processed, the array "a" is traversed and its index and value are printed.
# 7  
Old 10-13-2009
hi Ripat,
This is working fine for me ....Thanks .
Actually I was not knowing tht awk array can take index as a string also.
Ur guess has hit the bull's eye. genius

---------- Post updated at 05:41 PM ---------- Previous update was at 05:41 PM ----------

hi Ripat,
This is working fine for me ....Thanks .
Actually I was not knowing tht awk array can take index as a string also.
Ur guess has hit the bull's eye. genius
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to add a column of another data from another column?

Hola Como hacer: C:\System\SystemRun.4gl C:\System\SystemRunPrint.4gl C:\System\SystemViews.4gl Resultado: SystemRun.4gl C:\System\SystemRun.4gl SystemRunPrint.4gl C:\System\SystemRunPrint.4gl SystemViews.4gl C:\System\SystemViews.4gl... (0 Replies)
Discussion started by: tlaloc
0 Replies

2. UNIX for Beginners Questions & Answers

Add column and multiply its result to all elements of another column

Input file is as follows: 1 | 6 2 | 7 3 | 8 4 | 9 5 | 10 Output reuired (sum of the first column $1*$2) 1 | 6 | 90 2 | 7 | 105 3 | 8 | 120 4 |9 | 135 5 |10 | 150 Please enclose sample input, sample output, and code... (5 Replies)
Discussion started by: Sagar Singh
5 Replies

3. Shell Programming and Scripting

Add Column base on other Column Data

HI Guys, I want add one extra Column base on 3rd Column . Input :- M204 MS204_154 :vsDataUeMe M204 MS204_154 es:sMeasure 0 M204 MS204_154 es:90ilterCoe 9 M204 MS204_154 es:searchE9090ortTime 40 M204 MS204_154 es:servOrPrioI90HoTimer 4000 M204 MS204_154 es:ueMeajllls154545 TRUE... (5 Replies)
Discussion started by: pareshkp
5 Replies

4. Shell Programming and Scripting

Add all 4 column entries for similar column ids

Hi, I want to write a script which will add the entries in all columns for the same column id. I can do it in excel, but I need to do this for 384 columns which will come down to 96 (384/4). How can I do this iteratively A A A A B B B B C C C C 1 0 1 0 2 1 4 5 3 4 5 6 2 0 0 2 3 5 70 100 1... (7 Replies)
Discussion started by: Diya123
7 Replies

5. Shell Programming and Scripting

Add a character C in a column if that column is blank

I have some files that look as follows. I need to add a character 'C' in the fifth column if that column is blank. I prefer in-place editing. 1 1 B M 0 0 203 0, 0.0 0, 0.0 0, 0.0 0, 0.0 0.000 360.0 360.0 360.0 141.9 15.4 28.8 66.1 2 2 B A ... (21 Replies)
Discussion started by: thejitha
21 Replies

6. Shell Programming and Scripting

Add extra column if no column are less

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 File A.txt 11 LAL01A_1 1213 12 0 0 7 30 2 -122 1 300 14854 5000 2 221 LAL01A_1 1313 14 0 0 7 30 1 -122 2 300 14854 5000 2 12 LAL01A_1 1234 15 0 0 7 30 0 -122 1 300 14854 5000 2 I have file A.txt now i want to use if condition : if thr... (3 Replies)
Discussion started by: pareshkp
3 Replies

7. Shell Programming and Scripting

ADD Column Btw two column

I want to add column btw to column Input ABCDE2012 120 21.6 ABCDE2012 126 0.9 PLKJHN2012 128 20.2 UNHYT2012 1210 -0.3 Output// Column 1 Column 2 Cl 3 Cl4 ABCDE2012 ABCDE2012120 120 21.6 ABCDE2012 ABCDE2012126 126 0.9 PLKJHN2012 PLKJHN2012128 128 20.2... (3 Replies)
Discussion started by: pareshkp
3 Replies

8. Shell Programming and Scripting

to add special tag to a column based on column condition

Hi All, I have following html code <TR><TD>9</TD><TD>AR_TVR_TBS </TD><TD>85000</TD><TD>39938</TD><TD>54212</TD><TD>46</TD></TR> <TR><TD>10</TD><TD>ASCV_SMY_TBS </TD><TD>69880</TD><TD>33316</TD><TD>45698</TD><TD>47</TD></TR> <TR><TD>11</TD><TD>ARC_TBS ... (9 Replies)
Discussion started by: ckwan
9 Replies

9. Shell Programming and Scripting

Need to add letters to a column and add in a new column subtracting from another column

So I have this input 1 10327 rs112750067 T C . PASS DP=65;AF=0.208;CB=BC,NCBI 1 10469 rs117577454 C G . PASS DP=2055;AF=0.020;CB=UM,BC,NCBI 1 10492 rs55998931 C T . PASS DP=231;AF=0.167;CB=BC,NCBI 1 10583 rs58108140 G A ... (3 Replies)
Discussion started by: kellywilliams
3 Replies

10. Shell Programming and Scripting

Parse 1 column and add 2nd column

I'm racking my brain on this one! :( I have a list like this: Paul 20 Paul 25 Paul 30 Frank 10 Julie 15 Julie 13 etc, etc... I've been trying to figure out a way to have the output display the name in the first column ONCE and add the numbers in the second column and display that... (2 Replies)
Discussion started by: sdlennon
2 Replies
Login or Register to Ask a Question