Unix/Linux Go Back    


Shell Programming and Scripting Unix shell scripting - KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and shell scripts and shell scripting languages here.

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

Shell Programming and Scripting


Closed Linux or Unix Question    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 02-11-2013
vivek d r's Unix or Linux Image
vivek d r vivek d r is offline
Registered User
 
Join Date: Nov 2011
Last Activity: 8 April 2015, 10:02 AM EDT
Location: Bangalore, INDIA
Posts: 285
Thanks: 126
Thanked 4 Times in 4 Posts
Passing awk variable argument to a script which is being called inside awk

consider the script below


Code:
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 "printf "%s",alDFid;"
cmd | getline prio
print "priority=" prio
close(cmd)
 printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\nAlDefID=%d\n\n", id,nm,fx,dt,alDFid; }
  id=($i=="Alert id")?$(i+2):id; }
  nm=($i==" name")?$(i+2):nm;
  fx=($i==" fixed")?$(i+2):fx;
  dt=($i~/^ [0-9]+-/)?$i" "$(i+1):dt;
  alDFid=($i==" alertDefinitionId")?$(i+2):alDFid;
 }
}END{
 if(dt!=""){
 printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\nAlDefID=%d\n\n", id,nm,fx,dt,alDFid;
}
}' /tmp/alerts.xml


here the script that i am calling is someScript.sh and to that i want to pass the contents of alDFid , i itred giving it in quotes , $ but none of it worked. even tried printf "%s",alDFid even this is not working.


Does anyone know how to pass argument to script from Awk with awk variable??



ALSO
why does
Code:
awk -F'priority=' '{print $2}' | cut -d'"' -f2

inside cmd="" wont work.. it wont consider awk inside this command. it keeps throwing error as


Code:
| grep priority | awk -Fpriority= {print
awk: cmd. line:6:     ^ unterminated string
./alertCheck_vivek.sh_date: line 26: cmd: command not found
./alertCheck_vivek.sh_date: line 26: getline: command not found
./alertCheck_vivek.sh_date: line 27: print: command not found
./alertCheck_vivek.sh_date: line 28: syntax error near unexpected token `cmd'
./alertCheck_vivek.sh_date: line 28: `close(cmd)'

Sponsored Links
    #2  
Old Unix and Linux 02-11-2013
RudiC RudiC is online now Forum Advisor  
Registered User
 
Join Date: Jul 2012
Last Activity: 27 May 2015, 3:54 PM EDT
Location: Aachen, Germany
Posts: 5,975
Thanks: 106
Thanked 1,603 Times in 1,506 Posts
Your idea is correct, but as your code is absolutely unreadable, I only can guess that the variable alDFid is undefined when used to build the external command.
And, of course, you have an unterminated string, i.e. one unmatched double quote (I guess in the printf statement)

Last edited by RudiC; 02-11-2013 at 06:10 AM.. Reason: typo / addendum
Sponsored Links
    #3  
Old Unix and Linux 02-11-2013
vivek d r's Unix or Linux Image
vivek d r vivek d r is offline
Registered User
 
Join Date: Nov 2011
Last Activity: 8 April 2015, 10:02 AM EDT
Location: Bangalore, INDIA
Posts: 285
Thanks: 126
Thanked 4 Times in 4 Posts
the error which was coming was due to below line


Code:
awk: cmd. line:6: cmd="sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh  alertdefinition list --id=$myAlertDefID --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true | grep priority | awk -Fpriority= {print
awk: cmd. line:6:     ^ unterminated string
./alertCheck_vivek.sh_date: line 26: cmd: command not found
./alertCheck_vivek.sh_date: line 26: getline: command not found
./alertCheck_vivek.sh_date: line 27: print: command not found
./alertCheck_vivek.sh_date: line 28: syntax error near unexpected token `cmd'
./alertCheck_vivek.sh_date: line 28: `close(cmd)'

lets forget about that... the alDFid is defined below is the output


Code:
13214
priority=
ID=10101
NAME=APP-MS-lib_license_common-150040-licenseSchemaTampered-S_R
FIXED=true
DATE= 2013-01-22 07:54:51.3
AlDefID=13214

where the line above priority is alDFid
the snippet which i used was


Code:
awk -F'[=|"|<|>|,]' '{for(i=1;i<=NF;i++){
 if($i=="Alert id") {
  if(id!="")
        if(dt!=""){
printf "%s\n",alDFid;
cmd="sh someScript.sh alDFid"
cmd | getline prio
print "priority=" prio
close(cmd)
 printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\nAlDefID=%d\n\n", id,nm,fx,dt,alDFid; }
  id=($i=="Alert id")?$(i+2):id; }
  nm=($i==" name")?$(i+2):nm;
  fx=($i==" fixed")?$(i+2):fx;
  dt=($i~/^ [0-9]+-/)?$i" "$(i+1):dt;
  alDFid=($i==" alertDefinitionId")?$(i+2):alDFid;
 }
}END{
 if(dt!=""){
 printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\nAlDefID=%d\n\n", id,nm,fx,dt,alDFid;
}
}' /tmp/alerts.xml

in the above i want to pass the content of alDFid to someScript.sh script. But current implementation is passing string "alDFid " to the script.
Sponsored Links
Closed Linux or Unix Question

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Problem passing a search pattern to AWK inside a script loop quinestor Shell Programming and Scripting 14 03-14-2012 11:12 AM
Passing --usage as argument to awk script kristinu Shell Programming and Scripting 2 11-09-2011 08:31 PM
Passing value as a command line argument in awk script. humaemo Shell Programming and Scripting 4 07-25-2011 04:24 AM
Passing argument to system call in awk script mikesimone Shell Programming and Scripting 6 03-02-2010 06:41 PM
Passing argument to awk script AkumaTay UNIX for Dummies Questions & Answers 1 08-03-2001 11:12 AM



All times are GMT -4. The time now is 03:55 PM.