3

BEGINパラメータを渡してPerlスクリプトを呼び出し、AWKブロックで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; 
4

2 に答える 2

2

スクリプトをパイプしますgetline

awk 'BEGIN {
         cmd = "util.pl a b c"; 
         cmd | getline res; 
         close(cmd);
         print "in awk, application type is " res
     }'
于 2012-05-24T10:58:45.307 に答える
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]
        }
    }
于 2012-05-24T10:58:34.987 に答える