help on perl script..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help on perl script..
# 1  
Old 07-15-2008
help on perl script..

Hi perl gurus,

The below lines are the 1st few lines of my logfile to scan.
Based on this, i need to get the TOP5 UserIDs having the most activities/transactions, and the top5 tasks as well.

For example, thomsonj (appearing 4x sofar) would be the top1 UserID, and WithdrawCash (4x) would be the top1 Task.

.....
.....
04:45:48 >> ==========START of MESSAGE==========
04:45:48 >> UserID: gibsonwe
04:45:48 >> Task: CheckBalance
04:45:48 >> Processing....
04:45:50 >> Response: Current balance is [$1]

07:30:27 >> ==========START of MESSAGE==========
07:30:27 >> UserID: thomsonj
07:30:27 >> Task: WithdrawCash
07:30:27 >> Processing....
07:30:27 >> Response: [$1] dispensed

10:18:09 >> ==========START of MESSAGE==========
10:18:09 >> UserID: greendav
10:18:09 >> Task: FundTransfer
10:18:10 >> Response: Successfully transferred [$1]

13:47:23 >> ==========START of MESSAGE==========
13:47:23 >> UserID: thomsonj
13:47:23 >> Task: WithdrawCash
13:47:23 >> Processing....
13:47:26 >> Response: [$1] dispensed

15:06:15 >> ==========START of MESSAGE==========
15:06:15 >> UserID: thomsonj
15:06:15 >> Task: CheckBalance
15:06:15 >> Processing....
15:06:15 >> Response: Current balance is [$1]

17:44:50 >> ==========START of MESSAGE==========
17:44:50 >> UserID: greendav
17:44:50 >> Task: BillPayment
17:44:50 >> Processing....
17:44:50 >> Response: Successfully paid [$1]

20:25:29 >> ==========START of MESSAGE==========
20:25:29 >> UserID: thomsonj
20:25:29 >> Task: WithdrawCash
20:25:29 >> Processing....
20:25:29 >> Response: [$1] dispensed
.....
.....


Any help would be greatly appreciated.
Thanks much.
# 2  
Old 07-15-2008
what u can do is use hash in perl
1. open file in read mode
2. use regex to get filed after "User Id:"
3. put this "user Id" as key in Hash if not present
4. every time you find user present increase key value by 1
5. at the end sort keys of hash and do print.

following link might help

Perl Hash Howto
# 3  
Old 07-15-2008
Giving a try:

Code:
perl -lne'
  $usr{$1}++ if /UserID: (\w+)/;
  $task{$1}++ if /Task: (\w+)/;
  if (eof) {
    $, = "\n";
    print "\nTop 5 users:\n", "=" x 12, 
      (sort { $usr{$b} <=> $usr{$a} } keys %usr)[0..4];
    print "\nTop 5 tasks:\n",  "=" x 12, 
      (sort { $task{$b} <=> $task{$a} } keys %task)[0..4]; 
    }' input

# 4  
Old 07-15-2008
Thanks so much radoulov, it worked Smilie

But do u mind explaining a bit on the code.
Appreciate it mate.
# 5  
Old 07-16-2008
people should really do their own school/class/course work
# 6  
Old 07-16-2008
KevinADC is right,
I'm not sure if this is a homework (it may be) and this is not helpful (give vs teach a man a/to fish).
The interpretation of the code is left as an exercise to the OP.
# 7  
Old 07-17-2008
Code:
sed 's/.*>>//' a > a.new
awk 'BEGIN{
FS=":"
un=0
tn=0}
{
if (index($1,"UserID")!=0)
	user[$2]++
if (index($1,"Task")!=0)
	task[$2]++
}
END{
	for (i in user)
		if(user[i]>un){un=user[i];u=i}
	for(j in task)
		if(task[j]>tn){tn=task[j];t=j}
	print u"  - "un
	print t"  - "tn
}' a.new
rm a.new

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies

2. Shell Programming and Scripting

Excuting perl script from within a perl script with variables.

Not sure what I am doing wrong here, but I can print the list with no issue. Just a blank screen with the 'do'. #!/usr/bin/perl open FILE, "upslist.txt"; while ($line=<FILE>){ if ($line=~/^(.*?),(.*?)$/){ #print "ups:$1 string:$2\n"; do 'check_snmp_mgeups-0.1.pl -H $1 -C $2'; } ... (1 Reply)
Discussion started by: mrlayance
1 Replies

3. Shell Programming and Scripting

Perl : embedding java script with cgi perl script

Hi All, I am aware that html tags can be embedded in cgi script as below.. In the same way is it possible to embed the below javascript in perl cgi script ?? print("<form action="action.htm" method="post" onSubmit="return submitForm(this.Submitbutton)">"); print("<input type = "text"... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

executing perl script from another perl script : NOT WORKING

Hi Folks, I have 2 perl scripts and I need to execute 2nd perl script from the 1st perl script in WINDOWS. In the 1st perl script that I had, I am calling the 2nd script main.pl =========== print "This is my main script\n"; `perl C:\\Users\\sripathg\\Desktop\\scripts\\hi.pl`; ... (3 Replies)
Discussion started by: giridhar276
3 Replies

5. Shell Programming and Scripting

calling a perl script with arguments from a parent perl script

I am trying to run a perl script which needs input arguments from a parent perl script, but doesn't seem to work. Appreciate your help in this regard. From parent.pl $input1=123; $input2=abc; I tried calling it with system("/usr/bin/perl child.pl $input1 $input2"); and `perl... (1 Reply)
Discussion started by: grajp002
1 Replies

6. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

7. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

8. Shell Programming and Scripting

perl/unix: script in command line works but not in perl

so in unix this command works works and shows me a list of directories find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt but when i try running a perl script to run this command my $query = 'find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt';... (2 Replies)
Discussion started by: kpddong
2 Replies

9. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies

10. Shell Programming and Scripting

Perl: Run perl script in the current process

I have a question regarding running perl in the current process. I shall demonstrate with an example. Look at this. sh-2.05b$ pwd /tmp sh-2.05b$ cat test.sh #! /bin/sh cd /etc sh-2.05b$ ./test.sh sh-2.05b$ pwd /tmp sh-2.05b$ . ./test.sh sh-2.05b$ pwd /etc sh-2.05b$ So... (10 Replies)
Discussion started by: vino
10 Replies
Login or Register to Ask a Question