awk、变量、运算符、if多分支
awk语法
~ awk -F: '{print $3,$4}' /etc/passwd //-F指定:分隔符 默认以空格作为分隔符
~ awk -F: '{print &0,NF}' //$0打印全部,NF有几段内容
~ awk -F: '{print $NF}' /etc/passwd //$NF打印最后一段内容
~ awk -F: '{print NR}' /etc/passwd //$NR代表行号
~ awk -F: 'NR==1{print $1,NR}' /etc/passwd //打印第一行
~ awk -F: 'NR<=3{print $1,NR}' /etc/passwd //打印前三行
~ awk -F: 'NR==1{print NR,"---",$1}' /etc/passwd //打印第一行,并加---分隔
~ awk -F: 'NR >= 3 && NR <= 5{print NR,"---",$1}' /etc/passwd //打印第三行到第五行的内容
~ awk -F: 'NR <= 3 || NR >= 50{print NR,"---",$1}' /etc/passwd //打印前3行前和50行之后的内容
~ awk -F: '/nologin$/{print $1}' /etc/passwd //打印以nologin结尾的用户名
~ awk -F: '$1~/^r.*t$/{print NR,$1}' /etc/passwd //匹配第一个字段
~ awk -F: '$1=="root"{print NR,$1}' /etc/passwd //匹配第一个字段
awk文本处理
打印uid在30~40范围内的用户名。
~ awk -F: '$3 >= 30 && $3 <= 40{print $1,$3}' /etc/passwd
打印第5-10行的行号和用户名
~ awk -F: 'NR >=5 && NR <=10{print NR,$1}' /etc/passwd
打印奇数行
~ awk 'NR%2==1{print NR,$1}' /etc/passwd
打印偶数行
~ awk 'NR%2==0{print NR,$1}' /etc/passwd
打印字段数大于5的行
~ awk -F: 'NF > 5{print NR,$0}' /etc/passwd
打印UID不等于GID的用户名
~ awk -F: '$3 != $4{print NR,$1,$3,$4}' /etc/passwd
打印没有指定shell的用户
~ awk '/[^h]$/{print}' /etc/passwd
shell脚本编写
自动部署、初始配置、并启动nginx反向代理服务
~ vim install.sh
#!/bin/bash
rpm -qa | grep nginx
echo $?
if [ $? -ne 0 ]
thenyum -y install epel-release && yum -y install nginxiptables -F && setenforce 0systemctl start nginxecho $?
fi
~ chmod +x install.sh
自动部署、初始配置、并启动三台web
监控脚本:监控每台机器的内存使用率>70%,则输出报警信息
(思路提示:[root@www ~]# ((80>70))[root@www ~]# echo $?0
)
~ vim per.sh
#!/bin/bash
total=`free -w | awk 'NR==2{print $2}'`
used=`free -w | awk 'NR==2{print $6+$7}'`
per=`echo "scale=2;$used/$total" | bc -l | cut -d. -f2`
if (($per>=70))
thenecho '警告'
elseecho 'ok'
fi