我遇到一个问题,我需要调用带有参数传入的Perl脚本,并在AWK BEGIN
块中获取Perl脚本的返回值。就像下面一样。
我有一个Perl脚本util.pl
#!/usr/bin/perl -w
$res=`$exe_cmd`;
print $res;
现在在AWK BEGIN
块(ksh)中,我需要调用脚本并获取返回值。
BEGIN { print "in awk, application type is " type;
} \
{call per script here;}
如何使用参数调用Perl脚本并获取$res
的返回值?
res = util.pl a b c;
答案 0 :(得分:2)
将脚本封装到getline
:
awk 'BEGIN {
cmd = "util.pl a b c";
cmd | getline res;
close(cmd);
print "in awk, application type is " res
}'
答案 1 :(得分:0)
我用于从ldap
查询中提取数据的AWK脚本的一部分。也许你可以从我如何进行下面的base64解码中找到一些灵感...
/^dn:/{
if($0 ~ /^dn: /){
split($0, a, "[:=,]")
name=a[3]
}
else if($0 ~ /^dn::/){
# Special handling needed since ldap apparently
# uses base64 encoded strings for *some* users
cmd = "/usr/bin/base64 -i -d <<< " $2 " 2>/dev/null"
while ( ( cmd | getline result ) > 0 ) { }
close(cmd)
split(result, a, "[:=,]")
name=a[2]
}
}