shell awk 的一些用法
#1、打印挂载目录的使用量,默认以空格为分割df -Ph | awk '{ print $5,$6 }' #2、以空格、冒号、\t、分号为分割
awk -F '[ :\t;]' '{print $1}' #3、打印6.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域
awk 'NR==3,NR==5 {print}' 6.txt
awk 'NR==3,NR==5 {print $0}' 6.txt
#打印6.txt文件中的第3行至第5行的第2列与第4列
awk 'NR==3,NR==5 {print $2,$4}' 6.txt #打印7.txt文件中,长度大于6的行号和内容
awk 'length($0)>6 {print NR,$0}' #以冒号切割,打印第一列同时只显示前5行:
cat /etc/passwd|head -5|awk -F: '{print $1}'
awk -F: 'NR>=1&&NR=1&&NR$2)||($1>$3)) { print $2} else {print $1} }' #9、awk与数组组合实战,统计passwd文件用户数
awk -F: 'BEGIN {count=0;} {name = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name}'/etc/passwd #10、awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址。
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}' #11用/etc/shadow文件中的密文部分替换/etc/passwd中的"x"位置,生成新的/tmp/passwd文件。
awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print >>"/tmp/passwd"}' /etc/shadow /etc/passwd #12、awk统计服务器状态连接数:
netstat -an | awk '/tcp/ {s[$NF]++} END {for(a in s) {print a,s}}'
netstat -an | awk '/tcp/ {print $NF}' | sort | uniq -c
#13、获取eth0的IP地址
ifconfigeth0|grep "Bcast"|awk '{print $2}' | awk -F: '{print $2}' #14、在输出的开头和结尾添加输出
#在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"
awk-F ':''BEGIN {print "name,shell"}{print $1"---"$7} END {print "blue,/bin/nosh"}' /etc/passwd #15、找出不允许登录的系统用户
awk -F : '/nologin/{print $1}' /etc/passwd #16、找出root组的用户
awk -F: '$4 ==0 {print "The user of group root:" $1}' /etc/passwd
页:
[1]