array problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting array problem
# 1  
Old 02-09-2007
array problem

Dear Experts,

please help me out once again my array concepts is not very clear i have one text file like.
1|usa|hh
2|usa|ll
3|usa|vg
4|uk|nn
5|uk|bb
6|kuwait|mm
6|kuwait|jkj
7|dubai|hh

i want to store the third fied of a text file in he array and after that it should give me some reports like this

third field count
usa 3
uk 2
kuwait 2
dubai 1
it should store the third field in to the array and give me the count how many times any name appeared.the third field can be alphanumeric.
please can any body tell me how to do this using array.

Regards,
Shary
# 2  
Old 02-09-2007
try this:

even I have been looking for a awk script for that its something like
group by columns and then the count.

I have awk to do group by and the sum:

awk -F, '{sum[$1,$2,$3]+=$4} END {for (i in sum) print i, sum[i]}' data.

Thanks
SUmeet
# 3  
Old 02-09-2007
array problem

Dear Summit,

thank you so much for replying me i really appreciate you
but please can you expalin me this
{sum[$1,$2,$3]+=$4}
what does this mean in array coz my array concept is weak and the other thing i want to store only 3rd field but in your case it seems to be stored 1,2,3 fileds right .
the data might be 1000 line in my text file so please can you brief it out your command
awk -F, '{sum[$1,$2,$3]+=$4} END {for (i in sum) print i, sum[i]}' data.

Regards,
Shary
# 4  
Old 02-09-2007
A perl solution:
Code:
$ cat data
1|usa|hh
2|usa|ll
3|usa|vg
4|uk|nn
5|uk|bb
6|kuwait|mm
6|kuwait|jkj
7|dubai|hh
$
$
$ cat mm.pl
#! /usr/local/bin/perl

open(DATA, "< data") || die "Unable to open file other\n";
while (<DATA>) {
        chomp;
        @fields = split(/\|/);
        $counts{$fields[1]}++;
}
close(DATA);

foreach $word (sort keys %counts) {
        print "value = ", $word, "  count = ",  $counts{$word}, "\n";
}
exit 0
$
$
$
$ ./mm.pl
value = dubai  count = 1
value = kuwait  count = 2
value = uk  count = 2
value = usa  count = 3
$

# 5  
Old 02-09-2007
using arrays

Dear Experts,

i dont want the script in perl.
so please if its possible try to do other than perl using arrays(not perl).

Regards,

Shary
# 6  
Old 02-10-2007
As per your sample output, you need count of second field not the third one, try this:
Code:
awk -F"|" '{ freq[$2]++ } END {
for (word in freq)
printf "%s\t%d\n", word, freq[word]
}' data

# 7  
Old 02-10-2007
using array

dear experts,
thank uou so much it really works.

take care bye
shary
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Loop and array problem

Hi, I have the following problem that is beyond what I can currently do with bash scripting. In file 1, I have ~ 2500000 values. Note this file is not sorted. 3 19 LABEL_A 3 37 LABEL_B 2 12 LABEL_C 1 15 LABEL_D I have a list of values in "file 2" ~ 25000 unique lines: Note -... (6 Replies)
Discussion started by: hubleo
6 Replies

2. Shell Programming and Scripting

Using awk array problem

I am trying to map values in the input file, where 2nd column depends on the specific value in the 1st column. When 1st column is A place 1 into 2nd column, when it is B, place 2, when C place 3, otherwise no change. My input: U |100|MAIN ST |CLMN1|1 A |200|GREEN LN |CLMN2|2 1 |12... (4 Replies)
Discussion started by: migurus
4 Replies

3. Shell Programming and Scripting

Array and Loop Problem

I've got this problem, if I modify an array in the loop and print it, everything is fine as long as I stay in the loop. But, when I print it outside the loop, nothing happens... How can I solve this problem? Here I prepared a sample for you to see my problem; zgrw@Rain:~$ cat test asd 123... (4 Replies)
Discussion started by: zgrw
4 Replies

4. Emergency UNIX and Linux Support

Problem with Array in Script

Below is my script. This script is getting an error code such as this one. fileListener.bat: entityArray=craig.uss@pnc.com: not found craig.uss@pnc.com fileListener.bat: entityArray=duns_noncusts.txt: not found duns_noncusts.txt fileListener.bat: entityArray=duns_misc.cpy: not found... (4 Replies)
Discussion started by: mkjp
4 Replies

5. Shell Programming and Scripting

Array problem in Ubuntu

Hi all, I am working in ubuntu for past few weeks .Since I was working in debian I had no problem with arrays.I followed the same method in ubuntu,but is is not working as I expected. Name="apple" Name="orange" print ${Name} Expected result is apple.But I got a error as "Bad... (8 Replies)
Discussion started by: karthigayan
8 Replies

6. Programming

Help on some array problem!!

i have no idea how to make a text file abc efg hij klm nop qrs to be a array such as, arr to be "abc efg" arr "hij kml" etc..... in C (2 Replies)
Discussion started by: tyckelvin1
2 Replies

7. UNIX for Dummies Questions & Answers

Array declaration problem

Hi all, I would like to declare a vector of variables and access them sequentially. Here is my code ARRAY_CT="0001000000 0000100000 0000010000" ELEMENTS_CT=${#ARRAY_CT} echo $ELEMENTS_CT for (( j=1;j<=$ELEMENTS_IS;j++)); do echo ${ARRAY_IS} done ... (2 Replies)
Discussion started by: f_o_555
2 Replies

8. Shell Programming and Scripting

awk array problem

hi i am trying to perform some calculations with awk and arrays. i have this so far: awk 'NR==FNR{ for(i=1; i<=NF; i++) {array+=$i} tot++;next} {for(i=1; i<=NF; i++) {avg=array/tot} {diff=(array - avg)}} {for(i=1; i<=NF; i++) {printf("%5.8f\n",diff)}}' "$count".txt "$count".ttt >... (4 Replies)
Discussion started by: npatwardhan
4 Replies

9. Shell Programming and Scripting

Array problem

I am using /bin/ksh for this problem. I have created some arrays with variable names as the array names: cnt=1 { while read myline; do tempmeas="${meas%%;*}" cto="${meas#*;}" tempstream=$stream # wholemeas holds the name of the array # each array name... (0 Replies)
Discussion started by: ajgwin
0 Replies

10. Shell Programming and Scripting

problem with array=($(find ....)

hi, I get a *.dat files list in an array using: array=($(find . -name "*.dat")) the problem is that when a filename contains spaces, each space-separated token of the filename is in a different element of array. For instance if I have: x@x:~/tmp$ ls *.dat test1.dat test 2.dat ... (1 Reply)
Discussion started by: jul
1 Replies
Login or Register to Ask a Question