sed -n -e 's/.*\([A-Z][A-Z]\)[0-9]*.*/\1/p' pcs.txt | uniq -c
For your input, it gave,
3 MG
4 CC
1 EE
Basically, the scripts strips out every character except for the two upper-case characters. And the script assumes you always have input which obey the format you provided.
Maybe I didn't explained it right. I need to find the sum for every different record of the 3rd field. So I need to sum the two numbers of the A423 and print the total.
It is working for the part of the file i gave in the beginning but it is not working in the whole file right. Probably uniq -c is counting the same lines that are one next to the other and not spread in the file. What I did to get the result I wanted is the use of sort.
sed 's/.*\([A-Z][A-Z]\)[0-9]*.*/\1/p' pcs.txt |sort| uniq -c
Do you know if instead of sed I can use awk to get the same result?
Thanks a lot. It is working properly but I cannot understand how it is working.
When you this
a[$3]+=$2
this means that you put the 3rd field in a table and you assign his value to be equal with the sum of its second field?????
And why we don't get many times the same 3rd field when printing (I don't want to be printed many times, I just want to understand how it is working).
a[$3]+=$2 <===> a[$3]=a[$3]+$2
with the following data
386 8192 A423 CC0177 40
586 65536 A424 CC0182 670
486 16384 A423 CC0183 100
486 16384 A425 CC0184 80
65000 4096 B407 EE1027 80
AWK processes data line by line
line #1: a["A423"]=a["A423"]+8192=8129
line #2: a["A424"]=a["A424"]+65536=65536
line #3: a["A423"]=a["A423"]+16384=8129+16384
...
...
...
Sorry for my pool English. That's all what I can explain to you.