Visit Our UNIX and Linux User Community


awk and fuction (recursion) !! Urgent !!


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users awk and fuction (recursion) !! Urgent !!
# 8  
Old 03-25-2008
Quote:
Originally Posted by varungupta
---------------------------------------------------------

I AM GETTING ERROR :
AccessLogMonitorAdv_script[32]: 0403-057 Syntax error at line 57 : `(' is not expected.

THEN NAME OF MY SCRIPT IS AccessLogMonitorAdv_script

PLEASE SUGGEST SOLUTION TO THIS !!
THANKS
Varun.
----------------------------------------------------------------------------

Have a look to the Syntax of the script and its giving error inside the function "fun" while redirecting the output to the file. ">>"

PLEASE FIND THE CODE ..
Code:
SCRIPT TO CHECK WHO HAS ACCESSED THE LOG/FILE IN PAST 'N' MINUTES, AND MAIL ACCORDINGLY.

MYPATH="/clocal/mqbrkrs/user/mqsiadm/varun/"
MAIL_RECIPIENTS="vg@dc.com"
#

Subject=":: LOGS BEING TOUCHED IN THE LAST FEW MINUTES ::"
>tempmail.txt
>tempfind.txt
>filterfile.txt
>tempgrep.txt
#*******************************************************************
## List all the files which one accessed since last 1 min #####
#*******************************************************************

index=1
pidprev=0

ps -ef | grep "\-ksh" | awk '$8 !~ /grep/ { printf "%s %s %s %s %s\n", $1, $2, $3, $5, $8 ; }' >> ./tempfind.txt

for file_dir in `find $MYPATH -amin -1`
do

        echo `fuser -uf "$file_dir" ` >> temp.txt.$$
        echo " $file_dir is  being accessed" >> temp.txt.$$
done

sed -n '/^[ ][a-z]*/p' temp.txt.$$ >> tempmail.txt
echo "Accessed By: " >>tempmail.txt
sed -n '/^[0-9]/p' temp.txt.$$ > filterfile.txt

echo "BEFORE FOR LOOP"
for pid_var in `awk '{ print $1 }' filterfile.txt`
do
                echo "**here i am inside the for loop** ";

                if [ "$index" -eq 1 ] ; then
                        echo "**inside if 1. ** " ;
                        pidprev="$pid_var" ;
                        echo "pid_var: $pid_var" ;
                        echo "pidprav: $pidprev" ;

                        `awk '$2 ~ pid_var {print $3 > "tempgrep.txt" }' tempfind.txt` ;

                        echo "1. " ;
                        cat tempgrep.txt ;
                        echo "----" ;

                        cat tempgrep.txt | \
                        while read ppid
                        do
                                        echo "**inside while loop 1.**"
                                        `awk 'function fun( n, pattern )
                                               {
                                                `awk '{ if($2~n && $1~pattern){
                                                                n=$3;
                                                                fun( n, pattern ); }
                                                        else{
                                                                if($2~n && $1!~pattern){
                                                                        print $1 >> "tempmail.txt" ;
                                                                        break ;
                                                                        }
                                                                else {next ;}
                                                            }
                                                        }' tempfind.txt`
                                               }

                                              BEGIN{ pattern = "mqsi[admtsprd]" }
                                              {if ( ppid !~ "" ) { fun( ppid, pattern ); }}

                                         '`
                        done

                        let "index+=1"  ;
                fi


                if [ "$pid_var" -ne "$pidprev" ] ; then
                        echo "**inside if 2. ** " ;
                        pidprev="$pid_var" ;
                        echo "pid_var: $pid_var" ;
                        echo "pidprav: $pidprev" ;
                       `awk '$2 ~ pid_var {print $3 > "tempgrep.txt" }' tempfind.txt` ;

                        echo "2. ";
                        cat tempgrep.txt ;
                        echo "----" ;

                        cat tempgrep.txt | \
                        while read ppid
                        do
                                echo "***inside while loop 2. ***"
                                        `awk 'function fun( n, pattern )
                                               {
                                                `awk '{ if($2~n && $1~pattern){
                                                                n=$3;
                                                                fun( n, pattern ); }
                                                        else{
                                                                if($2~n && $1!~pattern){
                                                                        print $1 >> "tempmail.txt" ;
                                                                        break ;
                                                                        }
                                                                else {next ;}
                                                            }
                                                        }' tempfind.txt`
                                               }

                                              BEGIN{ pattern = "mqsi[admtsprd]" }
                                              {if ( ppid !~ "" ) { fun( ppid, pattern ); }}

                                         '`
                        done
                fi

done

cat tempmail.txt | mailx -s "$Subject" "$MAIL_RECIPIENTS"

rm -f "temp.txt.*" 2> /dev/null
# >tempmail.txt
# >tempfind.txt
# >filterfile.txt
# >tempgrep.txt


Do let me know the suggestions !!
Thanks
Varun.Smilie
# 9  
Old 03-25-2008
Quote:
Originally Posted by varungupta
Code:
                                echo "***inside while loop 2. ***"
                                        `awk 'function fun( n, pattern )
                                               {
                                                `awk '{ if($2~n && $1~pattern){

You can't nest backticks like that. However, there's an alternate syntax which works.

Code:
var=$(echo outer and $(echo inner) backticks, oh my)

You would be more likely to get useful replies if you pared down the question to just the specific problem you have, rather than post an enormous script.
# 10  
Old 03-25-2008
Quote:
Originally Posted by era
You can't nest backticks like that. However, there's an alternate syntax which works.

Code:
var=$(echo outer and $(echo inner) backticks, oh my)

You would be more likely to get useful replies if you pared down the question to just the specific problem you have, rather than post an enormous script.
Hey,
Thanks for suggestions.
Can you tell me how to resolve that backticks in my code ?
As per my code, i am using awk, and how to resolve that nested feature ?
Please let me know, appreciate all your help.

Varun.
# 11  
Old 03-26-2008
Hint: I wrote "there is an alternative syntax which works". Try it.
# 12  
Old 04-01-2008
Hey Varun,

Did you got what you wanted or still looking for the solution..
# 13  
Old 04-16-2008
Quote:
Originally Posted by Bala24
Hey Varun,

Did you got what you wanted or still looking for the solution..
Hey,

Hope i'll give you good news soon, as far as this script is concerned !! Smilie

Thanks for being active and joining the forum for this issue.
Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #185
Difficulty: Medium
Moderating questions and answers at UNIX.com requires superior UNIX shell scripting abilities.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl system fuction with

Hi, I've written a perl script with a nested foreach statement in it. I have the line code: foreach $argn(@arguments) { foreach $location (@path) { system("find $location -name \"$argn\" -print >> results.txt"); ... (2 Replies)
Discussion started by: tchoruma
2 Replies

2. Shell Programming and Scripting

Urgent awk help !!

Hi All,I need to convert following field from a file L2578978CLC/576/116804 => L2578978CLC/00000576/00168304 i have to append Zeros in the third and fourth number after slash / in the above string (total length of number should be 8). means L2578978CLC/576/116804 should be converted to... (3 Replies)
Discussion started by: unknown123
3 Replies

3. Shell Programming and Scripting

urgent help awk script

Hi I have a scenario where i have a file name as abcd_To_hfgh.20090456778_1.dat I will get the filename as parameter and i need a string in between second _ and first . i.e i need hfgh in this case. Please help me with the script. This may not be awk script even if it can be... (2 Replies)
Discussion started by: dsdev_123
2 Replies

4. Shell Programming and Scripting

fuction return in perl

Hi All, I have a perl script(1.pl) that calls a c function defined in another file sample.c #!/usr/bin/perl my $re = 1; my @s = `/home/PERL_SCRIPTING/Rough/sample pline $re 10`; print "$_" foreach(@s); The sample.c is as bwlow: # include <stdio.h> int pline(int, int);... (4 Replies)
Discussion started by: jisha
4 Replies

5. UNIX for Dummies Questions & Answers

awk help urgent

Hi i am trying to read a line from a file and add the values in a new file eg Input file a1|a2|a3|a4|a5|a6 b1|b2|b3|b4|b5|b6 c1|c2|c3|c4|c5|c6 expected output File one a1|a2|a3 b1|b2|b3 c1|c2|c3 (3 Replies)
Discussion started by: rysh
3 Replies

6. Shell Programming and Scripting

Urgent!!!!! AWK

Thank everyone advanced. Would you please tell me how to use the shell variable in the awk body? I try follows but they all do not work, pls kindly help me: 1. str=`cat file2` awk 'BEGIN{print("'"$str"'"}' file1 > file3 2. str=`cat file2` awk 'BEGIN{print(ENVIRON}' file1 > file3 3.... (3 Replies)
Discussion started by: summer_cherry
3 Replies

7. Shell Programming and Scripting

Help me for AWK URGENT

i have a record like 1,23423,4545,6767,89898,3434,121212,123123,322 2,23233,3434,4545,56566,rxrx,e344343,343434,3434 1,23223,336,78787,78787,654,6767677,6877989,7878 i want to check the $6 field if its start with any letters, i want to move this record to some other file and keep rest of... (2 Replies)
Discussion started by: readycpbala
2 Replies

8. Programming

about memset fuction

Dear all, In my code,i am planning to use memset function to re-initialise an array before populating it everytime. Will using memset function be an overload to the program? (3 Replies)
Discussion started by: ranj@chn
3 Replies

9. UNIX for Dummies Questions & Answers

Get Oracle fuction return value in a variable

Hi All, :confused: I have the following code. var=' ' sqlplus user/pass@DB <<EOF whenever sqlerror exit 1 select package.func() into $var from dual; EOF echo $var But, this code does not work to display the value returned by the oracle function. Do we have to bind variables before... (3 Replies)
Discussion started by: rahulrathod
3 Replies

Featured Tech Videos