> awk -F [:/] '{print $1,$10}' /etc/passwd #匹配以:或/为间隔(同时用)
> df -h / |tail -1|awk '{print $5}' #"df -h /" 代表显示 "/" 这一行,默认空格间隔
> df -h |awk '/\/$/{print $4}' # $代表最后一行
> ifconfig eth0 | awk '/TX p/{print $3}' #/TX 匹配TX开头的第1行,p打印出第3列
> awk 'BEGIN{x=0}/bash$/{x++} END{print x}' /etc/passwd # 输出bash结尾的用户数
> awk -F: '$1~/root/' /etc/passwd #~包含 !~不包含,匹配每1行第1列包含root
> awk -F: '$7!~/nologin$/{print $1,$7 }' passwd # 匹配每1行第7列不包含nologin
> 条件设置示例
/正则表达式/
~ 匹配 !~ 不匹配
> NF #某一行列数
> NR #行数
> awk -F: '/bash$/{print $1}' /etc/passwd
> sed -n '/bash$/s/:.*//p' /etc/passwd
> awk '{$1="";print}' test.txt |sed -n 's/ /\n/gp' |sort -nr| head -1
> awk for循环案例
> cat sshd.txt |awk '{for(i=1;i<=NF;i++){print $i}}'
> awk '{print $1}' access.log | sort | uniq -c | sort -nr -k1
> # 匹配出关键字所在的列并输出
> awk '/\<sys\>/{for(i=1;i<=NF;i++)if($i~/sys/) print $i i}' sys1.txt
> awk '/\<sys\>/{for(i=1;i<=NF;i++)if($i~/sys/) print $i i}' sys1.txt |grep "sys=" |awk -F[">"] '{print $1}'
> # awk四则运算
awk -v x=100 -v y=10 'BEGIN{printf "%.2f\n",x/y}'
awk匹配输出
https://blog.csdn.net/weixin_34395205/article/details/92450870
待写注释
netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'
ss -ant | awk 'NR>1{++b[$1]} END{for(a in b)print a,b[a]}'
awk内置函数
https://www.runoob.com/w3cnote/awk-built-in-functions.html
- sub:替换函数
sub(regex,sub,string) #将string中的regex替换为sub
例如:
a=123
echo $a | awk '{sub("2","1",$a);print $a}' --> 113
---
shell> df -hT | awk '$7=="/"'
> /dev/mapper/centos-root xfs 37G 3.3G 34G 9% /
shell> df -hT | awk '$7=="/"{print $6}'
> 9%
shell> df -hT | awk '$7=="/"{sub("%","",$6);print $6}'
> 9