Sponsored Content
Top Forums Shell Programming and Scripting awk - Why can't value of awk variables be passed to external functions ? Post 302926243 by sreyan32 on Saturday 22nd of November 2014 07:03:11 AM
Old 11-22-2014
awk - Why can't value of awk variables be passed to external functions ?

I wrote a very simple script to understand how to call user-defined functions from within awk after reading this post.

Code:
function my_func_local {
echo "In func $1"
}

export -f my_func_local

echo $1 | awk -F"/" '{for (k=1;k<=NF;k++) {
if ($k == "a" ) {
system("my_local_func $k")
}
else{
print $k
}
}                        
}

I am running with the arguments-:
sh script.sh a/b/c/d/e
The expected output should be-:
Code:
In func a
b
c
d
e

But what I am getting is-:
Code:
In func
b
c
d
e

The value of k is not being passed into the external function when I am calling it from awk. Why is this happening ? How do you rectify this ? I need the function to be called within awk because what I am trying to do is take the input of a path from the user and recursively create the directories as I go.

How do I convert the value from $k to its actual value and pass it as a parameter ?
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

variable passed to awk

Anybody know what's wrong with this syntax? awk -v job="$job" 'BEGIN { FS="|"} {print $1,$2," ",$4," ",$3\n,$5,"\n"}' list It's keeping give me this message: awk: syntax error near line 1 awk: bailing out near line 1 It seems awk has problem with my BEGIN command. Any... (8 Replies)
Discussion started by: whatisthis
8 Replies

2. UNIX for Dummies Questions & Answers

variable passed to awk

Does anybody know how to print a variable passed to awk command? awk -F"|" 'BEGIN {print $job,"\n","Question \n"} {print $1,$2$4," ",$3}' "job=$job1" file1 I am trying to pass job the variable job1. the output is blank. ?? (3 Replies)
Discussion started by: whatisthis
3 Replies

3. Shell Programming and Scripting

awk - arithemetic functions with external variables

I'm trying to get awk to do arithmetic functions with external variables and I'm getting an error that I cannot figure out how to fix. Insight would be appreciated money=$1 rate1=$(awk -F"\t " '/'$converting'/{print $3}' convert.table) rate2=$(awk -F"\t"... (2 Replies)
Discussion started by: DKNUCKLES
2 Replies

4. Shell Programming and Scripting

AWK: Retrieving names of variables passed with -v

I'm an experienced awk user, but this one has me stumped. I have an awk script which is called from a UNIX command line as you'd expect: myscript.awk -v foo=$1 -v bar=$2 filename My question is this: is there a mechanism for determining the names of the -v variables within a script? ... (3 Replies)
Discussion started by: John Mac
3 Replies

5. Shell Programming and Scripting

flags passed to an awk script

I have an awk script script.awk for example and want to pass a flag (let's call it "neat") so that the data is put into nice columns. For example like this awk -v neat -f script.awk fin > fout Then check inside the program if the use has put neat, if yes I output the lines in nice columns,... (1 Reply)
Discussion started by: kristinu
1 Replies

6. Shell Programming and Scripting

arithmetic from csh variable passed to awk

I have the following code in a csh script I want to pass the value of the variable sigmasq to the awk script so that I can divide $0 by the value of sigmasq grep "Rms Value" $f.log \ | awk '{ sub(/*:*\.*/,x); \ print... (2 Replies)
Discussion started by: kristinu
2 Replies

7. Shell Programming and Scripting

Assign value to external variables from awk

Hello I have a text file with the next pattern Name,Year,Grade1,Grade2,Grade3 Name,Year,Grade1,Grade2,Grade3 Name,Year,Grade1,Grade2,Grade3 I want to assign to external variables the grades using the awk method. After i read the file line by line in order to get the grades i use this ... (2 Replies)
Discussion started by: Spleshmen
2 Replies

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

9. Shell Programming and Scripting

awk processing of passed variables

Currently have this: set current=192.168.0.5 set servicehost = `echo $current | awk -F. '{print $4}'` echo $numberoffields 5 ..but would like to reduce # of variables and eliminate echo to have something like this: set servicehost = `awk -v s="$current" -F. 'BEGIN{print $2}'`But... (3 Replies)
Discussion started by: Mid Ocean
3 Replies

10. Shell Programming and Scripting

Shell Variables passed to awk to return certain rows

Hi Forum. I have the following test.txt file and need to extract certain rows based on "starting position", "length of string" and "string to search for": 1a2b3d 2a3c4d ..... My script accepts 3 parameters: (starting col pos, length to search for, string to search for) and would like to... (4 Replies)
Discussion started by: pchang
4 Replies
URLCODING(3)						 libbash urlcoding Library Manual					      URLCODING(3)

NAME
urlcoding -- a Libbash library for encoding and decoding URL's. SYNOPSIS
urlEncodeString [-l] <STRING> urlEncodeFile [-l] <FILE> urlEncodeStream [-l] urlDecodeString <STRING> urlDecodeFile <FILENAME> urlDecodeStream DESCRIPTION
urlcoding is a collection of functions that convert ASCII-text to standard URL's and vice-versa. The AWK code used is based on code by Heiner Steven <heiner.steven@odn.de> The function list: urlEncodeString Creates a URL from an ASCII string urlEncodeFile Converts a file into URL-valid text urlEncodeStream Converts standard input into URL-valid text urlDecodeString Converts a URL-encoded text back to a plain-text form urlDecodeFile Coverts URL-encoded text in a file back to plain text urlDecodeStream Converts URL-encoded standard input to text Detailed interface description follows. The [-l] option for the encoding functions should be used when line-feed characters (' ') are to be encoded as well. All functions print the results of their conversions to standard output. The exit status of all functions is that of the command 'awk', with '0' for success FUNCTIONS DESCRIPTIONS
urlEncodeString [-l] <STRING> Converts STRING - a string of ASCII characters - to URL. urlEncodeFile [-l] <FILE> Coverts FILE of URL-encoded text to plain text urlEncodeStream [-l] Converts text from standard input to URL-text. urlDecodeString <STRING> Converts URL-encoded string STRING back to text. urlDecodeFile <FILENAME> Converts the URL-encoded text in FILE to plain text. urlDecodeStream Converts the URL-encoded text from standard input to plain-text AUTHORS
Alon Keren <alon.keren@gmail.com> SEE ALSO
ldbash(1), libbash(1) Linux Epoch Linux
All times are GMT -4. The time now is 06:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy