使用方法
awk '{pattern + action}' {filenames}
调用awk
有三种方式调用awk
1.命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk
3.将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。
复制代码
查询远程服务器存储详细信息
ssh 192.168.1.101 'free -g'
查询远程服务器内存,打印出第3行第4列的内容
ssh 192.168.1.101 'free -g' | awk 'NR==3{print $4}'
定时结束进程(本例5秒后结束)
& { sleep 5; eval 'kill -9 $!';}
查询远程服务器内存,打印出第3行第4列的内容,不管连接远程成功与否都会,5秒后结束
ssh 192.168.1.101 'free -g'| awk 'NR==3{print $4}' & { sleep 5; eval 'kill -9
无法使用awk命令
使用ssh远程执行命令,当使用到awk时总是报错,而sed和grep都没有问题,开始以为awk不支持远程执行。
经过反复测试,找到了解决方法。
举例:ssh 目标IP “awk ‘{print \$1}’文件名”
说明:只要保证ssh使用的是“”,并且awk中的$加上转义即可。
这个恼人的awk的问题,顺利解决了。