在AWK中调用Perl脚本

时间:2012-05-24 10:09:30

标签: perl awk ksh

我遇到一个问题,我需要调用带有参数传入的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; 

2 个答案:

答案 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]
        }
    }