The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Accessing Shell Variables in awk or sed nasersh Shell Programming and Scripting 3 05-05-2008 07:44 AM
variables in shell viko Shell Programming and Scripting 2 03-03-2008 11:09 PM
Modify shell variables with AWK Santi Shell Programming and Scripting 4 12-26-2007 10:28 PM
Using shell variables In awk nortypig Shell Programming and Scripting 11 08-24-2006 12:48 AM
substituting shell variables suds19 Shell Programming and Scripting 1 10-16-2002 08:55 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-05-2009
mirusko mirusko is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 14
Awk, shell variables

Hello, I've been trying to figure out how to use variables inside the AWK command and use it back in the korn shell sript.

in my script I have lots of awk commands like this

grep Listen /etc/ssh/sshd_config | \
awk '{ if ($2 == "22" ) print "OK";
else print "not OK"
}'

I need to add a counter to count how many issues/problems I have, something like

x=0

grep Listen /etc/ssh/sshd_config | \
awk '{ if ($2 == "22" )
print "OK";
else
print "not OK"
x++
}'

# ... more of awk commands ...

echo x;

unfortunatelly x "inside" the awk command is different/local to awk command ... is there a way to do thi/

Thank you,
K.
  #2 (permalink)  
Old 01-05-2009
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Posts: 205
Hi,

you can pass variables to awk via the "-v"-option. See "man awk".

Code:
awk -v x=$x '{print x }' file
To use the awk output in a shell-variable something like:

Code:
x=$(awk ... )
works.

HTH Chris
  #3 (permalink)  
Old 01-05-2009
mirusko mirusko is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 14
Chris,
awk -v x=$x ... works great and I'm able to pass the value into awk, now I just need to export it back to the script ...
I can't use
x=$(awk ... ) 'cause my command uses also print command and the counter, is there a way how to export the variable from within the AWK command?

thank you,
K.
  #4 (permalink)  
Old 01-05-2009
JerryHone JerryHone is offline
Registered User
  
 

Join Date: Nov 2006
Location: UK
Posts: 178
Quote:
Originally Posted by mirusko
is there a way how to export the variable from within the AWK command
The simple answer is no. The awk script is running as a subshell and there's no way to make a child process alter the environment of its parent.

Having said that, the awk process can create a file (say, /tmp/awk.env) with the content
Quote:
export X=<x>
where <x> is the new value. In your parent script, you then source the env file i.e.
Quote:
awk -v x=$X ...
. /tmp/awk.env
NOTE: By having the "export" in env file, it's not necessary to pass $X into the next awk call as it's now available in the parent's environment.

HTH

Jerry
Sponsored Links
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 07:22 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0