passing argument into awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting passing argument into awk
# 1  
Old 02-01-2007
passing argument into awk

i'm trying to pass a numerical argument with function xyz to print specfic lines of filename, but my 'awk' syntax is incorrect.
ie

xyx 3 (prints the 3rd line, separated by ':' of filename)

Code:
function xyz() {
arg1=$1
cat filename | awk -F: -v x=$arg1 '{print $x}'
}

any ideas?
# 2  
Old 02-01-2007
Change print $x to print x
# 3  
Old 02-01-2007
Quote:
Originally Posted by jim mcnamara
Change print $x to print x
won't that only print out the number '3' and not the 3rd field??

I tried it anyway and i am still receiving
Code:
awk: syntax error near line 1
awk: bailing out near line 1


Last edited by prkfriryce; 02-01-2007 at 04:45 PM..
# 4  
Old 02-01-2007
Quote:
Originally Posted by prkfriryce
won't that only print out the number '3' and not the 3rd line??
[...]
You mean the 3rd field?

Code:
$ cat filename
field1:field2:field3

$ function xyz() {
> awk -F: -v x="$1" '{print $x}' filename
> }

$ xyz 3
field3

If you want the 3rd line:

Code:
$ cat filename
line1
line2
line3

$ awk -F: -v x="3" 'NR==x' filename
line3

P.S. Given the error, it seems that you're using an old, broken awk,
on Solaris: /usr/bin/awk. In that case you can change the syntax like this:

Code:
awk -F: '{print $x}' x="$1" filename

But you'd better use nawk (/usr/bin/nawk) or /usr/xpg4/bin/awk.

Last edited by radoulov; 02-01-2007 at 05:25 PM..
# 5  
Old 02-01-2007
Quote:
Originally Posted by radoulov
You mean the 3rd field?

Code:
$ cat filename
field1:field2:field3

$ function xyz() {
> awk -F: -v x="$1" '{print $x}' filename
> }

$ xyz 3
field3

If you want the 3rd line:

Code:
$ cat filename
line1
line2
line3

$ awk -F: -v x="3" 'NR==x' filename
line3

P.S. Given the error, it seams that you're using an old, broken awk,
on Solaris: /usr/bin/awk. In that case you can change the syntax like this:

Code:
awk -F: '{print $x}' x="$1" filename

But you'd better use nawk (/usr/bin/nawk) or /usr/xpg4/bin/awk.
yes i'm sorry I meant 'field' not line. I will try

Code:
$ cat filename
field1:field2:field3

$ function xyz() {
> awk -F: -v x="$1" '{print $x}' filename
> }

$ xyz 3
field3

and
Code:
awk -F: '{print $x}' x="$1" filename

when I get a chance

thanks

edit*

the second method works! Thanks!

Last edited by prkfriryce; 02-01-2007 at 05:29 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Passing --usage as argument to awk script

I have the awk script below and things go wrong when I do awk -v dsrmx=25 -f ./checkSRDry.awk --usage I basically want to override the usual --usage and --help that awk gives. How do people usually handle this situation when you also want to supply your own usage and help concerning the... (2 Replies)
Discussion started by: kristinu
2 Replies

3. Shell Programming and Scripting

Passing value as a command line argument in awk script.

I have one working awk command line. Which taking data from the “J1202523.TXT” file and generating the “brazil.dat” file. PFB code. awk '{ DUNS = substr($0,0,9);if ( substr($0,14,3) == "089" ) print DUNS }' J1202523.TXT > Brazil.dat But now I want to pass two parameter as a command line argument... (4 Replies)
Discussion started by: humaemo
4 Replies

4. Shell Programming and Scripting

Problem passing directory as argument with awk

I'm trying to figure out what's getting passed as the argument when I try to pass a directory as an argument, and I'm getting incredibly strange behavior. For example, from the command line I'm typing: nawk -f ./test.awk ~ test.awk contains the following: { directory = $NF print... (13 Replies)
Discussion started by: mrplainswalker
13 Replies

5. Shell Programming and Scripting

Passing argument to system call in awk script

So, I have this script. It reads a CSV file that has a mixture of object names with IP addresses (parsing out that part I have working), and object names which have a DNS name. I want to be able to run a "dig +short" based off of the name given to me in the line of the awk script, and then deal... (6 Replies)
Discussion started by: mikesimone
6 Replies

6. Shell Programming and Scripting

passing argument from Cshelll to awk command

Hi all I have got a file digits.data containing the following data 1 3 4 2 4 9 7 3 1 7 3 10 I am writing a script that will pass an argument from C-shell to nawk command. But it seems the values in the nawk comman does not get set. the program does not print no values out. Here is the... (1 Reply)
Discussion started by: ganiel24
1 Replies

7. Shell Programming and Scripting

"Again passing argument to awk" !!

hi, I have this script #!/usr/bin/awk -v var1=1 -f $17==31 END{ { print $0 } } exit i am passing a file name from the command line now i want to make the 17th field value to be passed from command line. How can i do that, (1 Reply)
Discussion started by: aryasoumen
1 Replies

8. Shell Programming and Scripting

Passing non Awk Argument in Awk

Dear Conerned, I am facing a situation where i need to pass an argument which is non-awk variable like day=090319 awk '/TID:R/ && /TTIN:/' transaction.log I want to add this day variable like below awk '/TID:R$day/ && /TTIN:/' transaction.log But it is not working. :confused: (1 Reply)
Discussion started by: saifurshaon
1 Replies

9. Shell Programming and Scripting

passing Argument

Hi All, i have script like below.. echo "1) first option" echo "" echo "2) second option" echo "" echo "*) please enter the correct option" read select case $select in 1) echo "first option selected" ;; 2) echo "second option selected" ;; *) echo "please enter the correct... (4 Replies)
Discussion started by: Shahul
4 Replies

10. UNIX for Dummies Questions & Answers

Passing argument to awk script

I am writing a shell script. Now i need to read in a string and send it to an awk file to compare and search for compatible record. I wrote it like tat: read serial | awk -f generate.awk data.dat p/s: the data file got 6 field. According to an expert, we can write it like tat: read... (1 Reply)
Discussion started by: AkumaTay
1 Replies
Login or Register to Ask a Question