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