在处理过程中,AWK能否调用外部程序?

在处理过程中,AWK能否调用外部程序?,awk,gawk,nawk,Awk,Gawk,Nawk,AWK是否可以在处理过程中调用外部程序(传递参数并获取返回的信息),但只能在外部程序执行完成后继续处理?是的,下面是一个示例: awk ' BEGIN { "date +%Y" | getline print "The year is "$0 }' 输出: 今年是2014年 system函数可以调用外部命令,但只返回退出代码。您必须重定向正在调用的程序的输出,然后读取该文件 retcode = system("command > file.out") file="file.out

AWK是否可以在处理过程中调用外部程序(传递参数并获取返回的信息),但只能在外部程序执行完成后继续处理?

是的,下面是一个示例:

awk '
BEGIN {
  "date +%Y" | getline
  print "The year is "$0
}'
输出:

今年是2014年


system
函数可以调用外部命令,但只返回退出代码。您必须重定向正在调用的程序的输出,然后读取该文件

retcode = system("command > file.out")
file="file.out"; 
while(( getline line < file ) > 0 ) {
    print line
}
retcode=system(“命令>文件.out”)
file=“file.out”;
而((getline0){
打印行
}

是的,有两种方法可以调用外部命令,
system()
getline
。您可以使用
getline
获取返回的文本,
system()
将为您提供外部cmd的返回代码。请参见此示例:

kent$  awk 'BEGIN{"wc -l /etc/passwd"|getline var; print var}' 
20 /etc/passwd
此示例调用外部cmd
wc-l/etc/passwd
,并将返回值赋给awk变量:
var