AWK的基本用法

AWK的基本用法
一、awk文本过滤的基本用法
格式: awk [选项] ‘[条件]{指令}’ 文件
其中 print是最常用的编辑指令;若有多条件编辑指令可用分号分隔。
awk过滤数据时支持仅打印某一列,如第2列,第5列等。
1.处理文本时,若未指定分隔符,则默认将空格、制表符等作为分隔符
例:打印磁盘的剩余空间
df -h | awk ‘{print $4}’
2.选项 -F 可指定分隔符
awk -F: ‘{print $1,$7}’ /etc/passwd
awk 还识别多种单个字符 如 “:” 或 “/” 分隔
awk -F[: /] ‘{print $1,$10}’ /etc/passwd

awk常用内置变量
$0 文本当前行的全部内容
$1 文本的第1列
NR 文件当前行的行号
NF 文本当前行的列数(有几列)

输出每次处理行的行号,以及当前行以“:”分隔的字段个数(有几列)
awk -F: ‘{print NR,NF}’ /etc/passwd

利用awk提取本机的网路流量,根分区剩余容量 获取远程失败的IP地址
ifconfig eth0 |awk ‘/RX p/{print $5}’ //过滤接收数据的流量
ifconfig eth0 |awk ‘/TX p/{print $5}’ //过滤发送数据的流量

df -h / |tail -l |awk ‘{print $6}’ //根分区剩余容量

根据/var/log/secure 日志文件,过滤远程连接密码失败的IP地址
awk ‘/Failed/{print $11}’ /var/log/secure

awk 处理的时机
awk [选项] ‘BEGIN{指令} {指令} END{指令}’ 文件
BEGIN {} 行前处理 读取文件内容前执行,指令执行一次 {} 逐行处理,读取文件过程中执行,指令执行n次
END{} 行后处理,读取文件结束后执行,指令执行一次。
例: 统计系统中使用bash作为登录shell的用户的总数
awk ‘BEGIN{x=0}/bash$/{x++}/END{print x}’ /etc/passwd

提取IP地址及访问量,根据访问量排名
awk ‘{ip[$1]++} END{for (i in ip){print i,ip[i]}}’ /var/log/httpd/access_log |sort -nr

你可能感兴趣的:(awk基本用法)