awk NR issue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk NR issue
# 1  
Old 11-03-2011
awk NR issue

Hi guys,

i am trying to analyze a text file using awk and am not able to solve this issue.

This is the piece of code that I have written

Code:
BEGIN {
        ## Time to count MACs -> 5 seconds.
        TIME_LIMIT = 5;
	   k = 50000;
}

## For every line.
{
       time_in_seconds = $1

       mac = $2;
     
       if ( mac_pair[mac] ) {
               diff = time_in_seconds - mac_pair[mac];
		##print diff
                if ( diff > TIME_LIMIT ) {
                        ++counter;
                        printf "%s\n", "Incrementing counter: " $0;
                } 
        } else {
                ## Increment counter for first time of this MACs.
                ++counter;
                printf "%s\n", "Incrementing counter: " $0;
        }

      mac_pair[mac] = time_in_seconds;
## NEW ROUTINE
	if ( NR = k){
	remove_time = time_in_seconds-5;
	##print remove_time
	for (x in mac_pair)
	  { if (mac_pair[x] < remove_time ) 
	    { delete mac_pair[x]
	      print x}
	  }
	k = k + 50000;
	}
}

END {
        printf "%s = %d\n", "Counter is:", counter;
}

The code goes through lines, matches and increments a counter if there is no match for the previous 5 seconds. The issue I m facing is i have to run this over huge files and my ram gets exhausted. That is why I have included a new routine which will discard packets after a set number of lines have been processed.

If i try to print NR before and after it runs this routine, i see it gets altered. Also the routine within if ( NR = k) runs for every line. I am not sure why.

here are some sample input

Code:
1319170474.165379 164:186:219:250:181:93:255:255:255:255:255:255:130.192.9.212:130.192.9.255:55549:1947
1319170474.308849 0:13:41:11:173:255:1:0:94:0:0:13:192.168.100.129:224.0.0.13:8192:33198
1319170474.543025 0:224:129:88:169:186:255:255:255:255:255:255:192.168.10.126:192.168.10.255:631:631
1319170474.546619 0:25:209:27:17:125:255:255:255:255:255:255:130.192.9.131:255.255.255.255:631:631
1319170474.165379 164:186:219:250:181:93:255:255:255:255:255:255:130.192.9.212:130.192.9.255:55549:1947
1319170474.308849 0:13:41:11:173:255:1:0:94:0:0:13:192.168.100.129:224.0.0.13:8192:33198
1319170474.543025 0:224:129:88:169:186:255:255:255:255:255:255:192.168.10.126:192.168.10.255:631:631
1319170474.546619 0:25:209:27:17:125:255:255:255:255:255:255:130.192.9.131:255.255.255.255:631:631

help me out Smilie
# 2  
Old 11-03-2011
Quote:
Originally Posted by jamie_123
Also the routine within if ( NR = k) runs for every line. I am not sure why.
Try:
Code:
if (NR == k)

instead of:
Code:
if (NR = k)

# 3  
Old 11-03-2011
That did the trick!! Thanks franklin!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Help with awk issue

OK, so I am trying to use awk as a method of accessing a table stored in a file to then provide the capability of a look up table. The table is stored in a file named "/Users/jhaney/Desktop/assetTypeMapping.tsv" and looks like this: aCategory aLetter aNumber AssetCat1 A 123 ... (10 Replies)
Discussion started by: jhaneyzz
10 Replies

2. Shell Programming and Scripting

awk - issue to get the right IP

On AIX 5.3 and AIX 6.1, I have this script for checking printers being pingable or not. for i in `lsallq` do echo "Queue Name: " $i echo "----------------------------------------" for j in `lsallqdev -q $i` do echo " Device Name:" $j hname=`echo... (3 Replies)
Discussion started by: Daniel Gate
3 Replies

3. Shell Programming and Scripting

Variable value substitution issue with awk command issue

Hi All, I am using the below script which has awk command, but it is not returing the expected result. can some pls help me to correct the command. The below script sample.ksh should give the result if the value of last 4 digits in the variable NM matches with the variable value DAT. The... (7 Replies)
Discussion started by: G.K.K
7 Replies

4. Shell Programming and Scripting

awk issue

Hi all, i am trying to use below command to see the output of hardware inventory, but i only see 2 first line no output of the command. awk '/Hardware/ {print $0}' XXX_result.txt Hardware inventory: Hardware inventory: any idea how to see whatever is under hardware inventory. i... (11 Replies)
Discussion started by: Jared
11 Replies

5. Shell Programming and Scripting

issue trying to use awk

Hi Gurus, I am facing a similar issue usiung an awk command. Below is my requirement: ---DATA--- A;F;G A;D;E A;D;E B;Z;P C;Z;Q Expected: A F<TAB>G D<TAB>E D<TAB>E B D<TAB>E (1 Reply)
Discussion started by: rajangupta2387
1 Replies

6. Shell Programming and Scripting

AWK Issue

Hey, this is my code, cat $fulltrpath | while read line do inputfile=$(sed 1q $fulltrpath | awk '{ FS = "\t"; print $2$1}') outputpath=$(sed 1q $fulltrpath | awk '{ FS = "\t"; print $3 }') echo $inputfile echo $outputpath cp $inputfile $outputpath let path++ done if i... (1 Reply)
Discussion started by: inshafccna
1 Replies

7. Shell Programming and Scripting

Issue with AWK

I have this input file 0FB7,1083,Synchronized,FriNov121655,2816_7RAID5,05F:1_10F:1,10000000NoneNone,DC_db00p01 0FB7,1150,Split,MonApr180658,2816_7R5GC,N/A,N/A,N/A 06C4,0710,Synchronized,WedMar91105,2816_7RAID5,04E:1_11E:1,10000000NoneNone,DL_nb00p25... (1 Reply)
Discussion started by: greycells
1 Replies

8. Shell Programming and Scripting

Issue in awk

In the following code, Im trying to imbed many statements in a single awk statement. But it gives an error on that, for i in `less usage_types_dwh.txt` do cd /u01/app/evident/analysis_lab/usg_type grep $i svc_type.txt | head -1 | awk 'BEGIN {FS=","} {print $1 "==" $2 ":" $3 ":" $4;... (2 Replies)
Discussion started by: alishehzadpaul
2 Replies

9. Shell Programming and Scripting

Awk issue

Can someone please explain below code. $LIST|awk ' /^$/ { next } substr($0,1,4)=="Exiting" { mk = 1; next } mk==1 { print $3,$7,$10,$14; exit } Cheers, gehlnar (5 Replies)
Discussion started by: gehlnar
5 Replies

10. Shell Programming and Scripting

Awk issue

Hi, # grep "^Listen" httpd.conf | awk '{print $2}' FrontEnd_1_IP:8081 FrontEnd_2_IP:8081 8081 8082 8083 # I need to get the values one at a time but I just can't manage to do that. Thanks, Bianca (20 Replies)
Discussion started by: potro
20 Replies
Login or Register to Ask a Question