网站编辑做啥都,淮南发布网,最新新闻有哪些,网站建设必须买数据库么步骤一#xff1a;awk的基本用法
1#xff09;基本操作方法
格式1#xff1a;awk [选项] [条件]{指令} 文件
格式2#xff1a;前置指令 | awk [选项] [条件]{指令}
其中#xff0c;print 是最常用的编辑指令#xff1b;若有多条编辑指令#xff0c;可用分号分隔。
…步骤一awk的基本用法
1基本操作方法
格式1awk [选项] [条件]{指令} 文件
格式2前置指令 | awk [选项] [条件]{指令}
其中print 是最常用的编辑指令若有多条编辑指令可用分号分隔。
处理文本时默认将空格、制表符作为分隔符。
条件可以用/ /的方式与sed类似
awk常用内置变量
$0 文本当前行的全部内容
$1 文本的第1列
$2 文件的第2列
$3 文件的第3列依此类推
NR 文件当前行的行号
NF 文件当前行的列数有几列
[rootsvr5 ~]# cat abc.txthello the worldwelcome to beijingawk {print} abc.txt #输出所有awk /to/{print} abc.txt #输出有to的那行awk {print $2} abc.txt #输出所有行的第2列awk /to/{print $1} abc.txt #输出有to的那行的第1列awk {print $0} abc.txt #输出所有行所有列awk {print $0,$1} abc.txt #输出所有行所有列第1列awk {print NR} abc.txt #输出所有行的行号awk {print NR,$0} abc.txt #输出所有行的行号所有列awk {print NR,NF} abc.txt #输出所有行的行号列号(有几列)
选项 -F 可指定分隔符
awk -F: {print $1} user #文档中如果没有空格可以用F修改分隔符awk -F: {print $1,$6} user #使用冒号作为列的分隔符显示第1、6列
awk的print指令不仅可以打印变量还可以打印常量
awk -F: {print $1 的家目录是 $6} user #输出常量加双引号即可
格式化输出信息
awk [选项] [条件]{指令} 文件awk [选项] BEGIN{指令} {指令} END{指令} 文件
BEGIN{ } 行前处理读取文件内容前执行指令执行1次{ } 逐行处理读取文件过程中执行指令执行n次END{ } 行后处理读取文件结束后执行指令执行1次awk -F: BEGIN{print start}{print $1}END{print over} userawk BEGIN{print NR}{print NR}END{print NR} user
输出信息时可以使用“\t”显示Tab制表位
awk -F: BEGIN{print User\tUID\tHome}{print $1\t$3\t$6}END{print 总计NR行} user #合在一起写
步骤一认识awk处理条件的设置
使用正则设置条件
/正则/ ~ 包含 !~不包含
awk -F: $6~/root/{print} user #输出第6列包含root的行awk -F: $6~/bin/{print} user #输出第6列包含bin的行awk -F: $6!~/bin/{print} user #输出第6列不包含bin的行
定义数组的格式数组名[下标]元素值
调用数组的格式数组名[下标]awk BEGIN{a[abc]abcabc;a[xyz]xyzxyz;print a[xyz]} awk {a[$1]}END{for(i in a){print i,a[i]}} shu.txt #使用逐行任务与数组收集文档shu.txt中的信息然后在END任务中使用for循环显示所有数组a的下标与值
统计Web访问量排名
通过awk提取信息时利用IP地址作为数组下标每遇到一个重复值就将此数组元素递增1最终就获得了这个IP地址出现的次数。
针对文本排序输出可以采用sort命令相关的常见选项为-r、-n、-k。其中-n表示按数字顺序升序排列而-r表示反序-k可以指定按第几个字段来排序
awk {ip[$1]}END{for(i in ip){print ip[i],i}} /var/log/httpd/access_log | sort -nr
/var/log/secure是安全日志如果有人登陆时输入错误密码的话信息会记录下来这种信息可以用awk抓取出来方法如下
awk /Failed password for root/{ip[$11]}END{for(i in ip){print i,ip[i]}} /var/log/secure #统计安全日志中访问root账户且密码输入错误的ip地址与次数