Awk Functions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk Functions
# 1  
Old 08-19-2008
Awk Functions

Hi all.
I have a simple shell script shown below which calls an awk function and then print valid or invalid depending on the return value:

Code:
#!/bin/sh

cat file.CSV| nawk -f validate '
BEGIN { FS=","; counter=0}

{
        FS=",";
        gsub("\"","")
        valid=validate($1);
        if (valid == 1)
                print "INVALID";
        else
                print "VALID"
        
}

When i run this script I get no output at all. The script runs but nothing seems to happen. However when i include the function, shown below, in the script it runs as expected.

Code:
function validate(object)
{
        #populates an array List 
        if(object in stationList){
                return 0;}
        else{
                return 1;}
}

I dont want to have to include the functions code in every script I write and I was under the impression that using -f validate when starting nawk would let me then call the function from within my script.
Any ideas or help with this would be appreciated.

Thanks
# 2  
Old 08-19-2008
Your main awk script must be in a file.
Code:
nawk -f  validate.awk -f main.awk file.CSV

validate.awk :
Code:
function validate(object)
{
        #populates an array List 
        if(object in stationList){
                return 0;}
        else{
                return 1;}
}

main.awk :
Code:
BEGIN { FS=","; counter=0}

{
        FS=",";
        gsub("\"","")
        valid=validate($1);
        if (valid == 1)
                print "INVALID";
        else
                print "VALID"
        
}

Jean-Pierre.
# 3  
Old 08-19-2008
Thanks for your reply.

Does this mean it is not possible to call my function from inside a shell script?
I had hoped I could call it in an awk section of a shell script?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

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. 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{... (19 Replies)
Discussion started by: sreyan32
19 Replies

2. Shell Programming and Scripting

[solved] awk: placement of user-defined functions

Hi folks, is there any recommendation, especially from a point of performance, about where to place a user-defined function in awk, like in BEGIN{} or if it is only need once at the end in END{}? Or doesn't it matter at all since, awk is so clever and only interprets it once, wherever it is... (3 Replies)
Discussion started by: zaxxon
3 Replies

3. Shell Programming and Scripting

How to execute functions or initiate functions as command line parameters for below requirement?

I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line if then... (8 Replies)
Discussion started by: saku
8 Replies

4. Shell Programming and Scripting

awk "for" functions

hi all, i have these server logs: 25-04-2012;192.168.70.31;1254545454545417;500.0;SUCCESS 25-04-2012;192.168.70.32;355666650914;315126423993;;General_ERROR_23 30-04-2012;192.168.70.33;e;null;null;Failure 30-04-2012;192.168.70.33;e;null;null;Failure... (4 Replies)
Discussion started by: arrals_vl
4 Replies

5. Shell Programming and Scripting

User defined functions in awk

Hi; Is der ne to to use user defined functions for the values in awk find $1 -type f -ls | nawk '{{print "|"$3"|"$5"|"$6"|"$8"|"$9"|"$10"|"} for(i=11;i<=NF;i++){printf("%s",$i)}}' In above command i want to append some values returned by user functions on line. thnks; ajay (1 Reply)
Discussion started by: ajaypadvi
1 Replies

6. Shell Programming and Scripting

Don't understand how RS functions in awk

I learn using RS in awk to extract portion of file in this forum which is wonderful solution to the problem. However, I don't understand how exactly it operates. I don't quite understand the mechanism behind how searching for /DATA2/ can result in extracting the whole section under "DATA2" ... (3 Replies)
Discussion started by: joe228
3 Replies

7. UNIX for Dummies Questions & Answers

Functions AWK

Hi, I´m using this code: nawk -F¤ -v campotipo=${CAMPO_TIPO_SEDRA} -v ficherolog=${DIRECTORIO_LOGS_MARINE_SEDRA}/${F_LOG_SEDRA} -v ficheroerroneos=${LOG_SEDRA_ERRONEOS} -v separador=${SEPARADOR} -v num_campos=${NUMERO_CAMPOS} -v fichero_procesando=${FICHERO_ENTRADA} ' function valores (... (2 Replies)
Discussion started by: danietepa
2 Replies

8. Shell Programming and Scripting

awk and trig functions

dear all, In my script, it would be ideal if I could use an arc-cos (inverse cos) function. I think trig functions are indeed provided by awk, but not inverse trig functions. So my question simply is: are there any alternative ways to incorporate inverse trig functions into a script? Any... (2 Replies)
Discussion started by: pauli
2 Replies

9. Shell Programming and Scripting

How to use string across functions in AWK

Hi , I m facing one problem with String usage in AWK . let me put what i need . i have a function and there i used one string ( meta_string) function 1 { ................... ................... meta_string = " this string got... (1 Reply)
Discussion started by: madhaviece
1 Replies

10. 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
Login or Register to Ask a Question