友情提示:本站最近进行了改版升级,如出现显示异常,请刷新页面或清除一下缓存!

  经常需要在awk中调用其他小程序,一般都是通过system调用来完成,但是用system调用的时候无法获取被调用程序的输出,那如何将一个程序的输出赋值给awk变量呢?答案就是通过getline!

CodingAnts@ubuntu:~/awk$ awk 'BEGIN{"pwd" | getline dir; print dir}'
/home/CodingAnts/awk

  执行linux的pwd命令,并通过管道输出给getline,再把输出值赋值给awk变量dir,最后打印出变量dir。这样,就实现了将程序的输出值赋值给awk变量了。

  关于如何将一个程序的输出值赋值给awk,总结下就是采用下述方式:

"需要执行的程序" | getline awk变量名

  将上面蓝色和红色部分替换成自己需要的程序和变量名即可,例如上面示例中的程序即为pwd,变量为dir,为了加强印象,再举一例:

CodingAnts@ubuntu:~/awk$ date
Fri Mar 23 21:39:05 PDT 2012
CodingAnts@ubuntu:~/awk$ awk 'BEGIN{"date" | getline d; split(d,a); print a[1]}'
Fri

  Linux中的date命令输出当前的日期信息,具体参见上面输出。上面的示例先执行Linux的date命令获取日期信息,通过管道输出给geiline,并赋值给awk的变量d,再以默认的空格为分割方式,将变量拆分到awk数组a中,数组a中每一项保存了date输出信息的一部分,a数组下标从1开始,要输出星期信息,则print a[1],如果需要输出其他信息,更改下标值即可。

转载请注明:Coding Ants » 如何将一个程序的输出赋值给awk变量?

相关文章

我来说说

(便于我们更好的交流)

没有交流就没有进步,在此输入您对本文的看法!
取消