The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Dummies Questions & Answers
Google UNIX.COM


UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !!

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Pass csh variable to Perl Raynon Shell Programming and Scripting 9 10-19-2007 06:46 PM
How to pass a variable to Awk ? Raynon Shell Programming and Scripting 24 02-26-2007 06:25 AM
getting the file name and pass as variable u263066 Shell Programming and Scripting 1 09-12-2006 01:38 AM
pass variable to awk inquirer UNIX for Dummies Questions & Answers 4 02-11-2004 12:23 AM
Pass variable to sed? kristy Shell Programming and Scripting 2 04-04-2002 12:14 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1  
Old 04-03-2007
eja eja is offline
Registered User
 

Join Date: Mar 2007
Posts: 17
How do I pass a variable to awk?

I have an awk statement where I Need to pass an environment variable but I cannot get it to work:

My evironment varible examples below:
$FILE1=/dev/fs/file.new
$FILE2=/dev/fs/file.old

Code below:

awk -F"|" '
BEGIN {
while( getline < "$FILE1" )
{ arr[$1]=1 }
}
arr[($1)] != 1 { print }
' $FILE2


I cannot hard code the file names into the awk statement. I need to apss the file name as a varibale. but my above awk is not reading $FILE1 as the value it is defined as in the environment.
Reply With Quote
Forum Sponsor
  #2  
Old 04-03-2007
vgersh99's Avatar
Moderator
 

Join Date: Feb 2005
Location: Boston, MA
Posts: 3,003
Code:
$FILE1=/dev/fs/file.new
$FILE2=/dev/fs/file.old

nawk -F'|' -v OFS='|' '
   NR==FNR { arr[$1]; next }
   arr[$1]
' $FILE1 $FILE2
Reply With Quote
  #3  
Old 04-03-2007
eja eja is offline
Registered User
 

Join Date: Mar 2007
Posts: 17
THank you for the reply.

Unfortunately I am running ina UNIX emulator WIndows Services for Unix. It does not ahve nawk. can this be done in awk?
Reply With Quote
  #4  
Old 04-03-2007
vgersh99's Avatar
Moderator
 

Join Date: Feb 2005
Location: Boston, MA
Posts: 3,003
Quote:
Originally Posted by eja
THank you for the reply.

Unfortunately I am running ina UNIX emulator WIndows Services for Unix. It does not ahve nawk. can this be done in awk?
worth tryin', ain't it?
Reply With Quote
  #5  
Old 04-03-2007
eja eja is offline
Registered User
 

Join Date: Mar 2007
Posts: 17
I did after I sent the reply. Sorry should have thought before I typed.
Reply With Quote
  #6  
Old 04-03-2007
vgersh99's Avatar
Moderator
 

Join Date: Feb 2005
Location: Boston, MA
Posts: 3,003
Quote:
Originally Posted by eja
I did after I sent the reply. Sorry should have thought before I typed.
and....? the verdict is....???
Reply With Quote
  #7  
Old 04-03-2007
eja eja is offline
Registered User
 

Join Date: Mar 2007
Posts: 17
Yes that would help. you can tell I am a newbie. Works great. I changed it slightly but it works.

awk -F'|' '
NR==FNR { arr[$1]=1; next }
arr[$1] !=1' $HOME/$WORK/$NewFile $HOME/$COMPARE/$OldFile > $HOME/$WORK/$NewFile.del

The above compares yesterdays file to todays and find deleted records.

Thanks very much for the help.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 02:13 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0