awk 例子
打印本机swap分区总大小,格式如:Swap:1023M:
free -m |awk '/Swap/{print $1,$2" M"}'
将当前目录下大于10K的文件打印出来:
ll | awk '{if($5>10240){print $NF}}' (1024代表字节)
打印当前sshd的端口和进程id,格式如ssh:22 pid:1241:
netstat -nltp | grep ssh |awk -F: '{print $2}'| grep -v "^$"|awk '{print "ssh:"$1}'
如果能在变量a中匹配到10,就打印“OK”;
awk 'BEGIN{a="100testaaa";if(a~/10/){print "Ok"}}'
Ok
echo |awk 'BEGIN{a="100testaaa"}a~/100/{print "ok"}
ok
计算5+5=10
[root@slavedb test]# awk 'BEGIN{a=5;a+=5;print a}'
10
[root@slavedb test]# awk 'BEGIN{a=5;a=a+5;print a}'
10
计算,如果a>9就打印出来ok,如果a大于等于11,就打印出ok;
awk 'BEGIN{a=11;if(a>9){print "ok"}}'
ok
awk 'BEGIN{a=11;if(a>=11){print "ok"}}'
三目运算,判断b,是否等于b;
awk 'BEGIN{a="b";print a=="b"?"ok":"err"}'
指定字段分隔符打印:
[root@JXX-Tencent-Game1 ~]# cat tab.txt
aa bb cc
[root@JXX-Tencent-Game1 ~]# awk 'BEGIN{FS=" +"}{print $1,$2,$3}' tab.txt
aa bb cc
以一个或多个空格,:为分隔符:
awk -F[" ":]+ '{print $1,$2}' /etc/passwd
打印出第七行:
awk -F ":" 'NF==7{print $0}' /etc/passwd
取ip,思路:第二行,第四个字段:
ifconfig eth0 |awk -F["":] 'NR==2{print $4}'
第一个字段是root的,全部打印出来:
awk -F: '$1=="root"{print $0}' passwd
第一个字段,并且第五个字段也是root,打印出来:
awk -F: '($1=="root")&&($5=="root"){print $0}' passwd
统计磁盘可用空间使用率:
df -h | grep sda1 | awk '{print $5}' | tail -1 | tr -d %
19