awk里面执行shell命令

先把文件列表存在filename文件中

awk '{system("rm $0")}' filename -------WRONG

因为对于 system来说 $0 不再是某行全部的内容,而是 “sh” , 上面的命令相当于执行“ sh rm sh”

然后

awk '{cmd="rm "$0;system(cmd)}' filename ----OK

下面的也ok

awk '{cmd="rm "$0;cmd|getline }' filename  ---- OK

man awk里面关于getline的说明,大意是说 运行command,同时会把输出存在$0 里面,或参数var中。


       command | getline [var]
                             Run command piping the output either into $0 or var, as above.

       command |& getline [var]
                             Run command as a co-process piping the output either into $0  or  var,  as  above.
                             Co-processes are a gawk extension.

posted on 2015-07-29 15:26  jounyl  阅读(1539)  评论(0编辑  收藏  举报

导航