Passing a Shell Variable to awk


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Passing a Shell Variable to awk
# 1  
Old 01-26-2011
Passing a Shell Variable to awk

Hello,

I have a file with 4 columns.

An arbitrary example is shown below:

a Tp 10 xyz
b Tq 8 abc
c Tp 99 pqr
d Tp 44 rst
e Tr 98 efg


Based on the values in col 2 and col 3, I will execute another program.

I have been running this:

for i in {10..100}
do
awk '(($2=="Tp")&&($3=="$i"))' inputFile >> PatternFile
done


However, the above code is only giving output corresponding to $2. What do I need to do differently to include $3 as well?

Thanks,
Guss
# 2  
Old 01-26-2011
to pass variables:
Code:
awk -v myvar="hi there" ' {print $1, myvar} ' inputfile

the -v can also be -v="$var" where $var is a shell variable.
# 3  
Old 01-26-2011
This should be sufficient and much faster:
Code:
awk '$2=="Tp" && $3 >= 10 && $3 <= 100' inputFile > PatternFile

# 4  
Old 01-26-2011
Quote:
Originally Posted by Franklin52
This should be sufficient and much faster:
Code:
awk '$2=="Tp" && $3 >= 10 && $3 <= 100' inputFile > PatternFile

Thanks for your input Franklin52. However, I need to pass it as a variable, since the program(s) I shall be executing subsequently on the input file will depend on the individual values I extract.

Thanks,
Guss.
# 5  
Old 01-26-2011
GNU awk allows ENVIRON eg:
Code:
awk '{ print ENVIRON["HOME"]; }'

# 6  
Old 01-27-2011
Quote:
Originally Posted by Gussifinknottle
Thanks for your input Franklin52. However, I need to pass it as a variable, since the program(s) I shall be executing subsequently on the input file will depend on the individual values I extract.

Thanks,
Guss.
You can use variables like this:
Code:
awk -v var1="TP" -v var2="10" -v var3="100" '
$2==var1 && $3 >= var2 && $3 <= var3' inputFile > PatternFile

This User Gave Thanks to Franklin52 For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk with passing variable

I have file called in in.txt contains with the below lines I want to display the lines between the value which I would be passing. one two three four five ten six seven eight Expected output if I have passed one and ten two three four five (8 Replies)
Discussion started by: mychbears
8 Replies

2. UNIX for Dummies Questions & Answers

Passing Shell Variable to awk

Hello All, May i please why my shell variable is not getting passed into awk script. #!/bin/bash -vx i="1EB07C50" /bin/awk -v ID="$i" '/ID/ {match($0,/ID/);print substr($0,RSTART,RLENGTH)}' /var/log/ScriptLogs/keys.13556.txt Thank you. (1 Reply)
Discussion started by: Ariean
1 Replies

3. Shell Programming and Scripting

awk programming -Passing variable to awk for loop

Hi All, I am new to AWK programming. I have the following for loop in my awk program. cat printhtml.awk: BEGIN -------- <some code here> END{ ----------<some code here> for(N=0; N<H; N++) { for(M=5; M<D; M++) print "\t" D ""; } ----- } ... (2 Replies)
Discussion started by: ctrld
2 Replies

4. Shell Programming and Scripting

Passing values from awk to shell variable

I am writing a script where I need awk to test if two columns are the same and shell to do something if they are or are not. Here is the code I'm working with: @ test = 0 ... test = `awk '{if($1!=$2) print 1; else print 0}' time_test.tmp` #time_test.tmp holds two values separated by a space... (3 Replies)
Discussion started by: Malavin
3 Replies

5. Shell Programming and Scripting

Passing awk variable argument to a script which is being called inside awk

consider the script below sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh alert list --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true >/tmp/alerts.xml awk -F'' '{for(i=1;i<=NF;i++){ if($i=="Alert id") { if(id!="") if(dt!=""){ cmd="sh someScript.sh... (2 Replies)
Discussion started by: vivek d r
2 Replies

6. Shell Programming and Scripting

Passing shell variable to awk script

I want to pass a shell variable to awk script : # cat file PSAPSR3 3722000 91989.25 2 98 PSAPSR7 1562000 77000.1875 5 95 PSAPUNDO 92000 4087.5625 4 96 #... (8 Replies)
Discussion started by: Reboot
8 Replies

7. Shell Programming and Scripting

Passing variable to awk

Hi, I'm new with this stuff, but I hope you can help me. This is what I'm trying to do: for id in $var; do awk '{if ($1 == $id) print $2}' merg_data.dat > neigh.tmp done I need that for every "id", awk search the first column of the file merg_data.dat which contains "id" and... (3 Replies)
Discussion started by: matteo86
3 Replies

8. Shell Programming and Scripting

Passing a variable to awk while in a shell for loop

I am a newbie to awk and c programming, however am not a unix newbie. However, I do need help with a kshell script I am writing. It is almost complete, the last step is killing me. Any help would be greatly appreciated. What I am trying to do is cat a text file that has usernames. Then, using... (2 Replies)
Discussion started by: synergy_texas
2 Replies

9. Shell Programming and Scripting

passing awk variable to the shell script

hi; i have a file containing lines like: 1|1069108123|96393669788|00963215755711|2|0|941||;serv:Pps6aSyria;first:0;bear i want to extract the second, third and fourth record of each line and store it in a file ";" seperated this is what i wrote while read line do ... (3 Replies)
Discussion started by: bcheaib
3 Replies

10. Shell Programming and Scripting

passing value to shell variable

dear all How to passing the parameters or results to outside of the AWK program? anyone can help awk '{print $1}' file1 > $a ? (2 Replies)
Discussion started by: trynew
2 Replies
Login or Register to Ask a Question