[Solved] AWK to parse adjacent matching lines

Hi,

I have an input file like

F :   0.1 : 0.002
P :  0.3  : 0.004
P : 0.5 : 0.008
P : 0.1 : 0.005
L : 0.05 : 0.02
P: 0.1 : 0.006
P : 0.01 : 0.08
F : 0.02 : 0.08


Expected output:

F :   0.1 : 0.002
P :  0.3  : 0.017     (Here it is addition of  0.004+ 0.008 + 0.005)
L : 0.05 : 0.02
P: 0.1 : 0.086   ( (Here it is addition of  0.006 + 0.08 )
F : 0.02 : 0.08

That is here ^P rows third column get added and made as single column.

In awk how to get it.

Thanks
Vasanth

:wall:

awk -F' *: *' '
NR == 1    { prev = $1; a = $2 }
$1 == prev { v[$1] += $3 }
$1 != prev { print prev " : " a " : " v[prev]; v[prev] = ""
  v[$1] = $3; a = $2
}
{ prev = $1 }
END { print prev " : " a " : " v[prev] }
' INPUTFILE

Hi,

Your code worked..

First because of improper spaces, i got into issue.

To get rid of spaces

sed "s/[' ']*//g" infile > mid_file

then your code as check_scr.awk

NR == 1    { prev = $1; a = $2 } 
$1 == prev { v[$1] += $3 } 
$1 != prev { print prev " : " a " : " v[prev]; v[prev] = ""   
v[$1] = $3; a = $2 
} 
{ prev = $1 } 
END { print prev " : " a " : " v[prev] } 

then from prompt window

awk -F: -f chek_scr.awk mid_file

Thanks
Vasanth:b: