awk里面执行shell/系统命令
2016-11-23 23:44
477 查看
先把文件列表存在filename文件中
(1)
awk '{system("rm $0")}' filename -------WRONG
因为对于 system来说 $0 不再是某行全部的内容,而是 “sh” , 上面的命令相当于执行“ sh rm sh”
具体例子:
如有t,tt,ttt几个zone,需要删除。
#zoneadm list -cv | gawk '{print $2}' | grep t | tail -3| gawk '{system("zonecfg -z $1 delete -F")}'
会报错。
#zoneadm list -cv | gawk '{print $2}' | grep t | tail -3| gawk '{system("zonecfg -z "$1" delete -F")}'
注意:这样就删除成功,$1放在双引号的外面,才能识别是awk中的$1。
# gawk '{system("echo $0")}' 1.ksh
sh
sh
sh
sh
sh
sh
解释:$0为SHELL中的$0,sh的个数是1.ksh的行数。
(3)
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.
先把文件列表存在filename文件中
(1)
awk '{system("rm $0")}' filename -------WRONG
因为对于 system来说 $0 不再是某行全部的内容,而是 “sh” , 上面的命令相当于执行“ sh rm sh”
具体例子:
如有t,tt,ttt几个zone,需要删除。
#zoneadm list -cv | gawk '{print $2}' | grep t | tail -3| gawk '{system("zonecfg -z $1 delete -F")}'
会报错。
#zoneadm list -cv | gawk '{print $2}' | grep t | tail -3| gawk '{system("zonecfg -z "$1" delete -F")}'
注意:这样就删除成功,$1放在双引号的外面,才能识别是awk中的$1。
# gawk '{system("echo $0")}' 1.ksh
sh
sh
sh
sh
sh
sh
解释:$0为SHELL中的$0,sh的个数是1.ksh的行数。
(3)
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.
相关文章推荐
- awk里面执行shell命令
- awk:base64加密解密,执行shell命令
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- C#远程执行Linux系统中Shell命令和SFTP上传文件
- 在awk中可以直接执行shell命令
- ansible 直接执行系统命令 碰到了awk中的$
- QProcess 执行系统命令 shell 如:执行tftp命令
- 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了
- Jenkins执行远程Linux系统的shell命令
- 使用shell脚本ssh远程执行命令,使用awk时总是报错
- java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值
- awk执行shell命令
- 执行系统命令并且将输出写到指定日志文件的shell脚本(1)
- Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程
- awk中可以使用system来执行复杂的shell命令
- 执行系统命令并且将输出写到指定日志文件的shell脚本(2)
- 在应用程序里面执行shell命令
- shell记录报警系统执行的危险命令
- IPython下执行shell命令-魔力函数(alias store rehash)- 千月的python linux 系统管理指南学习笔记(6)
- 使用Java代码执行系统命令/shell命令, 并获取输出结果