定义
把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
常用参数
FILENAME awk浏览的文件名
BEGIN 处理文本之前要执行的操作
END 处理文本之后要执行的操作
FS 设置输入域分隔符,相当于命令行 -F选项
NF 浏览记录的域的个数(列数)
NR 已读的记录数(行数)
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 整条记录
$! 表示当前行的第一个域......以此类推
实战1
搜索/etc/passwd 有root关键字的所有行,并显示对应的shell
awk -F : ‘/root/{print$7}‘ /etc/passwd
打印/etc/passwd的第二行信息
awk -F : ‘NR==2{print$0}‘ /etc/passwd
实战2
使用begin加入标题
awk -F : ‘BEGIN{print"BEGIN","BEGIN"}{print$1,$2}‘ /etc/passwd
自定义分隔符
echo "111 222|333 444|555 666" | awk ‘BEGIN{RS="|"}{print$0}‘
实际案例1
统计状态码是404或者500的数据
less nginx.log |awk ‘$9~/404|500/{print$0}‘
实际案例2
找出访问量最高的ip, 统计分析,取出top10
less nginx.log | awk -F " " ‘{print$1}‘ | sort | uniq -c | sort -nrk 1 -t‘ ‘|awk -F " " ‘{print$2}‘|head -10