AWK可以在处理期间调用外部程序吗?

时间:2014-05-07 13:07:08

标签: awk gawk nawk

AWK是否有可能在处理期间调用外部程序 - 传递参数并获取信息 - 仅在外部程序执行完成后继续处理?

3 个答案:

答案 0 :(得分:2)

是的,有两种方法可以调用外部命令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

答案 1 :(得分:0)

是的,这是一个例子:

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

输出:

  

这一年是2014年

答案 2 :(得分:0)

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

retcode = system("command > file.out")
file="file.out"; 
while(( getline line < file ) > 0 ) {
    print line
}