![]() |
|
|
|
|
|||||||
| 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 |
| ls - maximum number of files | karnan | UNIX for Dummies Questions & Answers | 6 | 10-15-2008 02:56 PM |
| maximum number of arguments | matrixmadhan | UNIX for Dummies Questions & Answers | 9 | 10-15-2008 02:03 PM |
| Need to replace the first word of a line if it occurs again in the next line(shell) | geeko | Shell Programming and Scripting | 1 | 09-25-2007 07:15 AM |
| maximum number of times - a file can be opened | matrixmadhan | High Level Programming | 3 | 03-21-2006 08:24 AM |
| Number of login times | ftengcheng | AIX | 7 | 08-02-2005 12:35 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
TO find the word which occurs maximum number of times
Hi Folks !!!!!!!!!!!!!!!!!!!
My Requirement is............. i have a input file: 501,501.chan 502,502.anand 503,503.biji 504,504.raja 505,505.chan 506,506.anand 507,507.chan and my o/p should be chan->3 i.e. the word which occurs maximum number of times in a file should be displayed.. Its Really Urgent!!!!!!!!!!!!!!!!!!! |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
A slight weaker one :-) this will not print 2 names with same max number of occurrence
$ awk -F "." '{arr[$2]+=NF/2} END {for (i in arr) {print i"->",arr[i]}}' maxtime.out| sort -k2 | tail -1 |
|
#3
|
|||
|
|||
|
cut -d'.' -f2 filename|sort|uniq -c|sort|tail -1| awk '{print $2"->"$1}'
Last edited by ranjithpr; 01-08-2008 at 04:12 AM. |
|
#4
|
||||
|
||||
|
Awk solution :
Code:
> cat f1 501,501.chan 502,502.anand 503,503.biji 503,503.biji 503,503.biji 504,504.raja 505,505.chan 506,506.anand 507,507.chan Code:
>awk '{
a[$NF]++
if ( a[$NF] >= max )
max=a[$NF]
}
END {
for ( item in a )
if ( max == a[item] )
print item
}' FS="." f1
biji
chan
|
|
#5
|
||||
|
||||
|
Klashxx's solution is a good one, thanks :-)
|
|
#6
|
|||
|
|||
|
awk solution
Hi,
I am not sure whether this one is more efficient for you. Please try on your file, any result let all of us here know. Code:
awk 'BEGIN{FS="."}
{
sum[$2]++
}
END{
for (i in sum)
print i"->"sum[i]
}' file > file.t
sort -t">" +1 -n file.t | tail -1
rm file.t
|
|||
| Google The UNIX and Linux Forums |