在AWK中调用Perl脚本
我有一个问题,我需要调用带有传入参数的Perl脚本,并在AWK在AWK中调用Perl脚本,perl,awk,ksh,Perl,Awk,Ksh,我有一个问题,我需要调用带有传入参数的Perl脚本,并在AWKBEGIN块中获取Perl脚本的返回值。就像下面一样 我有一个Perl脚本util.pl #!/usr/bin/perl -w $res=`$exe_cmd`; print $res; 现在在AWKBEGIN块(ksh)中,我需要调用脚本并获取返回值 BEGIN { print "in awk, application type is " type; } \ {ca
BEGIN
块中获取Perl脚本的返回值。就像下面一样
我有一个Perl脚本util.pl
#!/usr/bin/perl -w
$res=`$exe_cmd`;
print $res;
现在在AWKBEGIN
块(ksh)中,我需要调用脚本并获取返回值
BEGIN { print "in awk, application type is " type;
} \
{call per script here;}
如何使用参数调用Perl脚本并获得$res
的返回值
res = util.pl a b c;
AWK脚本的一部分,用于从
ldap
查询中提取数据。也许你可以从我如何进行下面的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]
}
}
/^dn:/{
如果($0~/^dn:/){
拆分($0,a,“[:=,]”)
名称=a[3]
}
else if($0~/^dn::/){
#显然需要特殊处理
#对*部分*用户使用base64编码字符串
cmd=“/usr/bin/base64-i-d将脚本导入getline
:
awk 'BEGIN {
cmd = "util.pl a b c";
cmd | getline res;
close(cmd);
print "in awk, application type is " res
}'
我真的不想让这听起来很刺耳,但有什么理由不只是用Perl编写整个脚本吗?除非它是一个大型成熟的AWK脚本,否则我可能会建议使用Perl来完成整个过程。确实如此。尤其是当您的Perl脚本正在进行另一个过程时。