![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| calculate 13 months ago | andrea_mussap | Shell Programming and Scripting | 4 | 11-21-2007 05:14 PM |
| calculate 13 months ago | andrea_mussap | Shell Programming and Scripting | 3 | 11-16-2007 12:18 PM |
| Count No of Records in File without counting Header and Trailer Records | guiguy | Shell Programming and Scripting | 2 | 06-07-2007 09:15 AM |
| How To Calculate | krishna_sicsr | Shell Programming and Scripting | 1 | 03-28-2007 07:24 AM |
| How to calculate with awk | whatisthis | Shell Programming and Scripting | 4 | 11-09-2005 09:39 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
How to calculate a sum of certain records?
Hi,
i have a file where the records are like this. vt100 2048 D402 MG0010 0 586 262144 D403 MG0011 1000 486 8192 D404 MG0012 270 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 I want firstly, to count how many times each combination of the first 2 letters from the 4th field exist and print it like this: 3 MG or MG 3 5 CC I tried this : Code:
awk -F"\t" '{print $4}' pcs.txt | uniq -c
Secondly, I want to sum the second field for each differrent entry of the 3rd field and print them. Like this A423 24576 A425 16384 I tried this : Code:
awk -F"\t" '{a[$3]=$3;
for (i = 1; i <= NR; i++){
for (i = 1; i <= NR; i++){
if(a[++i] = $3){
size+=$2}
}
print a[i]" "size
}' pcs.txt
Please help me |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
This should do it for your first counting part...
Code:
sed -n -e 's/.*\([A-Z][A-Z]\)[0-9]*.*/\1/p' pcs.txt | uniq -c 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. Vino |
|
#3
|
||||
|
||||
|
Oops...
Got the wrong message in the wrong thread. Vino Last edited by vino; 06-10-2005 at 07:11 AM. Reason: Posted in the wrong thread.... |
|
#4
|
|||
|
|||
|
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.
PS Sorry for my English |
|
#5
|
|||
|
|||
|
Quote:
Code:
sed 's/.*\([A-Z][A-Z]\)[0-9]*.*/\1/p' pcs.txt |sort| uniq -c |
|
#6
|
||||
|
||||
|
I think for uniq to work properly, it needs a sort'ed list.
Not sure, tho'. Vino |
|
#7
|
||||
|
||||
|
for 2nd question:
Code:
awk -F"\t" '{a[$3]+=$2}END{for (i in a) print i,a[i]}'
|
||||
| Google The UNIX and Linux Forums |