Visit Our UNIX and Linux User Community


Passing Variables to AWK


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing Variables to AWK
# 1  
Old 01-28-2002
Question Passing Variables to AWK

Does anybody have an explanation for the following:

The following scripts runs fine on IRIX64 6.5 but has bugs on Solaris 8.

#! /bin/sh
echo run only on an SGI machine
echo type in linenumber
read j
echo value
read value
awk -f rmspass2 level=$value $j'step1.mlf'

When the script is run on a Sun machine it accepts the variable, but you can't do any math with it.

Any ideas?
# 2  
Old 01-28-2002
Found on the man page for awk:
Any filename of the
form var=value is treated as an assignment, not a filename,
and is executed at the time it would have been opened if it
were a filename. Variables assigned in this manner are not
available inside a BEGIN rule, and are assigned after previ-
ously specified files have been read.

Is this the possible problem?
thehoghunter
# 3  
Old 01-28-2002
On Solaris, for passing variables, I have to use the xpg4 version of awk. Is it /usr/xpg4/bin/awk ?
Jimbo
# 4  
Old 01-28-2002
I don't think so, although I have to admit Man pages are not the easiest thing to understand.

I think this for the following three reasons:

1) I don't use the parameter until after the BEGIN statement

2) This wouldn't quite account for the different results I get from the same script just run on an SGI and SUN.

3) I can do math on the parameter (sorry I lied). What I can't do is use the parameter in an elvaluation test (i.e. an if test). If I use it in an if statment it just seems to set the parameter to zero. Yet if I print the parameter in the then part of the if statment it gives me it's correct verion.


I have look around for alternate version of AWK but don't have the one you mention but I do have nawk, oawk & pawk.

My main curiosity was why it awk would fail like that. I can get roung the problem by confining the awk scripts use to SGI machines.
# 5  
Old 01-28-2002
You already said it:The following scripts runs fine on IRIX64 6.5 but has bugs on Solaris 8.

Two companies building different varients of UNIX. There is probably something different in the way it's testing - is IRIX BSD based or System V? Solaris is a mix of the two (leaning more towards System V). It's not uncommon for ANY software to be a bit different. Double check that your code can be ported - that it isn't OS dependent (stated this since the test you spoke of isn't here so I can not help with it).
thehoghunter
# 6  
Old 01-28-2002
If you can print the variable, that proves that you are getting the variable into awk, so I think it strange that you cannot use it in an if statement. I would like to see that if statement where it evaluates to zero but prints OK under then.

Also, there are other ways to get variables into awk. For one, you can pull it like this:

BEGIN {varx=ENVIRON["myvar"]
Jimbo

Previous Thread | Next Thread
Test Your Knowledge in Computers #848
Difficulty: Medium
The IEEE standardized Bluetooth as IEEE 802.15.1, but IEEE no longer maintains the Bluetooth standard.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - passing variables in and out

Am looking to pass some Linux environment variables into AWK , can I simply use the -v option ? awk -F: -v AHOME=$HOME '{ if {rm AHOME/file.txt a=2 } }' config.txt ... (4 Replies)
Discussion started by: alldbest
4 Replies

2. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

3. Shell Programming and Scripting

Passing variables to awk

Hi guys, I need to fetch data from logfile between two given dates,i got the below code from our forum.It works perfect,but i need to enter the value dynamically to awk while running. awk '/2012 Jun/{p=1}!/2012 Jul/ && prev~/2012 Jul/ && p{p=0}{prev=$0}p' file i tried the below code,but... (4 Replies)
Discussion started by: mohanalakshmi
4 Replies

4. Shell Programming and Scripting

PAssing variables to awk arithmetic

Hi all, I am wanting to pass variables from a file to an awk arithmetic formula. When I use the formula with the value it works well. As soon as I make these variables I get an inf (infinity) response. I can certainly echo the variables back and they look correct. My googling for answers has... (3 Replies)
Discussion started by: gafoleyo73
3 Replies

5. Shell Programming and Scripting

Passing variables into AWK

I'm trying to use awk to write new entries to a hosts file if they don't exist. I need to do so depending on the type of system I have. Below is what I have, but it isn't working. awk -v myip1=$IP1 myip2=$IP2 myhost1=$HOST1 myhost2=$HOST2' BEGIN { mqhost1=0; mqhost2=0; stap1=0; stap2=0; } ... (4 Replies)
Discussion started by: Boomn4x4
4 Replies

6. Shell Programming and Scripting

ksh passing to awk multiple dyanamic variables awk -v

Using ksh to call a function which has awk script embedded. It parses a long two element list file, filled with text numbers (I want column 2, beginning no sooner than line 45, that's the only known thing) . It's unknown where to start or end the data collection, dynamic variables will be used. ... (1 Reply)
Discussion started by: highnthemnts
1 Replies

7. Shell Programming and Scripting

Passing awk variables to shell

Hi. I need to parse file and assign some values to variables, right now i do like below MYHOMEDIR=`awk '/Home/ {print $NF}' output.txt` MYSHELL=`awk '/Shell/ {print $NF}' output.txt` PRGRP=`awk '/Primary/ {print $NF}' output.txt` SECGRP=`awk '/Second/ {print $NF}' output.txt` In this... (10 Replies)
Discussion started by: urello
10 Replies

8. Shell Programming and Scripting

Passing space seprated variables in awk

Hi, How to pass space seprated variables in awk. (HP-UX, sh shell) I have the problem like below: var="Hello" var2="Manu Batham" echo $var2 | awk -v variable=${var} '{ printf "%s %s", variable, $1}' and its output is: Hello Manu while output should be: Hello Manu Batham Please... (4 Replies)
Discussion started by: manubatham20
4 Replies

9. Shell Programming and Scripting

Passing awk Variables

I am trying to pass the results from a variable gathered from awk, however when I echo the 'PARSE' and 'SUB', the response is blank. This is my command. awk -F= '/Unit/''{ PARSE=substr($2,1,5) ; SUB=substr($2,1,1) }' inputfile.lst Is this a kind of valid attempt or am I obligated to declare... (3 Replies)
Discussion started by: gozer13
3 Replies

10. Shell Programming and Scripting

Passing Variables to Awk

Hi I have a unix shell script with an awk statement. I would like to print some of the fields of an input file. However, I would like to print them dynamically, ie by passing the literal $1 $3 into the script to define the output. I have tried the following: variable1='$1' awk... (2 Replies)
Discussion started by: Bab00shka
2 Replies

Featured Tech Videos