help with nawk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help with nawk
# 1  
Old 08-15-2011
help with nawk

hi guys,
I am writing a code and have stuck at one point. Inside nawk I am storing my desired variable a, I just need to find if a is present in an external file error.log or not. If yes, print something. grep or for loop not working properly inside nawk. Sample code provided.

Code:
nawk '
  BEGIN {
    RS=""; FS="\</XYZ\>"
  }
  {
    for(i=1;i<=NF;i++) {
      n=split($i,arr," ");
      a=arr[2] " " arr[3] " " arr[4]; # for e.g. a=TimeStamp: 08/10/2011 14:14:06
         # check if 'a' is present in file "error.log", if yes, print $i
      < missing code > 
    }
  }
' tmp > tmp1

Any leads plz.. Thanks..
# 2  
Old 08-15-2011
Try this for your missing code:

Code:
if ($0 ~ a) print $0

# 3  
Old 08-15-2011
Thanks dude2cool, but that's not what I need.

I need to see if variable 'a' is present in an external file "error.log", if it's not present I will print $i, and if 'a' is present in "error.log", just pass.

I am not able to check if 'a' is present in error.log or not as grep is not working inside nawk.

Thanks.
# 4  
Old 08-15-2011
Post around 10 relevant lines from your input and post the desired output against that input . Thanks.
# 5  
Old 08-15-2011
I am using file 'tmp' in nawk. From that I am calculating variable 'a'.
sample 'a':
Code:
TimeStamp: 08/10/2011 14:14:06
TimeStamp: 08/10/2011 14:14:51
TimeStamp: 08/10/2011 14:17:10
TimeStamp: 08/10/2011 14:19:48
TimeStamp: 08/10/2011 14:20:45
TimeStamp: 08/10/2011 14:27:16

Another file error.log:
sample error.log
Code:
TimeStamp: 08/10/2011 14:14:06
<input>
      blah blah
</input>

TimeStamp: 08/10/2011 14:27:16
<input>
      blah blah
</input>

TimeStamp: 08/10/2011 14:20:45
<input>
      blah blah
</input>


I just need to check if all 'a' i.e. all TimeStamps are present in error.log file.
I need to print the missing ones. so output would be:
Code:
TimeStamp: 08/10/2011 14:14:51
TimeStamp: 08/10/2011 14:17:10
TimeStamp: 08/10/2011 14:19:48

Thanks.

---------- Post updated at 01:52 PM ---------- Previous update was at 01:50 PM ----------

It's very easy if done separately. I need this inside nawk as given below..
Code:
nawk '
  BEGIN {
    RS=""; FS="\</XYZ\>"
  }
  {
    for(i=1;i<=NF;i++) {
      n=split($i,arr," ");
      a=arr[2] " " arr[3] " " arr[4]; # for e.g. a=TimeStamp: 08/10/2011 14:14:06
         # check if 'a' is present in file "error.log", if not, print a
      < missing code > 
    }
  }
' tmp > tmp1

# 6  
Old 08-15-2011
I should maybe use an array for a
Code:
a[arr[2] " " arr[3] " " arr[4]] = 1

Then you can have the entire first part execute with FNR==NR { all code; next }
Next, remove all a's in the second file.
Code:
{ if ($0 in a) delete a[$0]; }

Lastly, and END block to print what's left.
Code:
END { for (i in a) print a[i]; }

Then you pass tmp error.log as arguments to nawk.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Nawk Problem - nawk out of space in tostring on

Hi.. i am running nawk scripts on solaris system to get records of file1 not in file2 and find duplicate records in a while with the following scripts -compare nawk 'NR==FNR{a++;next;} !a {print"line"FNR $0}' file1 file2duplicate - nawk '{a++}END{for(i in a){if(a-1)print i,a}}' file1in the middle... (12 Replies)
Discussion started by: Abhiraj Singh
12 Replies

2. Shell Programming and Scripting

Nawk help

I don't know whats wrong with the code here. Its giving double counts. nawk -F# ' { if( match($2, "= ") > 0) num=substr($2,RSTART+2,length($2)-1); if (match($20, "= ") > 0) res=substr($20,RSTART+2,length($20)-1); if(match(num,... (2 Replies)
Discussion started by: jagpreetc
2 Replies

3. Shell Programming and Scripting

using nawk

help out with code. two files aaa bbb contains some records..output file xyz should be like this..see below i/p file:aaa 08350|60521|0000|505|0000|1555|000|NYCMT|Pd_1 |-11878 i/p file: bbb 60521|60510 o/p file :xyz 60510|08350|60521|0000|505|0000|1555|000|NYCMT|Pd_1 |-11878 (5 Replies)
Discussion started by: Diddy
5 Replies

4. UNIX for Dummies Questions & Answers

Nawk help!!!

Hi, Please help me I want to filter all messages having a value less than a particular value..Please advice how to use <= in the below red marked script.. Getting the error as no such file or directory for the marked line no. Thanks in advance... Script is as under : read message gawk... (5 Replies)
Discussion started by: vanand420
5 Replies

5. Shell Programming and Scripting

Nesting - two nawk into one nawk

hi people; this is my two awk code: nawk '/cell+-/{r=(NF==8) ? $4FS$5FS$6 : NF==7 ? $4FS$5 : $4 ;c=split(r,rr);for (i=1;i<=c;i++){if(rr != "111111"){printf($3" %d ""\n",(i+3))}}printf("")}' /home/gc_sw/str.txt > /home/gc_sw/predwn.txt nawk -F'*' '{gsub(/ *$/,"")}$0=$1$($NF-2)'... (2 Replies)
Discussion started by: gc_sw
2 Replies

6. Shell Programming and Scripting

nawk help

Hi Gurus, I am using a script as under : read string nawk -v search="$string" ' /a/,/z/ { block = (block ? block ORS : "") $0; } /z/ { if (block ~ search) print block; } ' <File> nawk -v search="$string" ' /b/,/z/ { ... (1 Reply)
Discussion started by: vanand420
1 Replies

7. Shell Programming and Scripting

nawk help

What am I doing wrong here? I get syntax error. I am trying to parse a file looking for the lines with "running" as the first field then print the 5th field, then looking at the 9th field for specific values and writing the whole line to a junk file. nawk '; {if ($1 == "running")... (10 Replies)
Discussion started by: beppler
10 Replies

8. Shell Programming and Scripting

how to access values of awk/nawk variables outside the awk/nawk block?

i'm new to shell scripting and have a problem please help me in the script i have a nawk block which has a variable count nawk{ . . . count=count+1 print count } now i want to access the value of the count variable outside the awk block,like.. s=`expr count / m` (m is... (5 Replies)
Discussion started by: saniya
5 Replies

9. UNIX for Advanced & Expert Users

nawk use

I found a command who prints x lines before and after a line who contain a searched string in a text file. The command is : ------------------- nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r;print;c=a}b{r=$0}' b=2 a=4 s="string" file1 ...where "b" and "a" are the number of lines to print... (2 Replies)
Discussion started by: ctap
2 Replies

10. Shell Programming and Scripting

nawk

Hi, I had this syntax and no matter what I do, I can't get it run. err message: run6: syntax error at line 121 : `(' unexpected I went to line 121 and it's comment out! All the variables passed to nawk are valid. There are two places I suspect have the problem: 1.... (3 Replies)
Discussion started by: whatisthis
3 Replies
Login or Register to Ask a Question