Linux四剑客grep、find、sed、awk使用全解析

mtu 1500 qdisc mq state UP group default qlen 1000

link/ether 00:16:3e:16:5b:ef brd ff:ff:ff:ff:ff:ff
inet 10.3.0.86/20 brd 10.3.15.255 scope global dynamic eth0
   valid_lft 310239265sec preferred_lft 310239265sec
inet6 fe80::216:3eff:fe16:5bef/64 scope link
   valid_lft forever preferred_lft forever

root@master:~# ip a s eth0 | awk ‘NR==3’ | awk -F ‘inet |/20’ ‘{print $2}’ 10.3.0.86

示例:统计free结果中内存空闲率
```csharp
root@master:~# free | awk 'NR==2{print $NF/$2}'
0.82089
root@master:~# free | awk 'NR==2{print $NF/$2*100"%"}'
82.0729%

awk计算

大多数情况都可以使用awk进行算数运算,awk可以进行整数、小数的运算 基础用法示例:

root@master:~$ awk 'BEGIN{print 1/3}'
0.333333
root@master:~$ awk 'BEGIN{print 2*3}'
6
root@master:~$ awk 'BEGIN{print 3+3}'
6
root@master:~$ awk 'BEGIN{print 4-3}'
1

携带变量示例 awk -v选项用于创建或修改awk中的变量,-v是shell脚本与awk的桥梁 在awk中各种变量直接使用即可,不要加上$,如果加上了会被awk认为是取列

root@master:~$ num1=2
root@master:~$ num2=5
root@master:~$ awk -va1=${num1} -va2=${num2} 'BEGIN{print a1/a2}'
0.4
root@master:~$ awk -va1=${num1} -va2=${num2} 'BEGIN{print a1*a2}'
10
root@master:~$ awk -va1=${num1} -va2=${num2} 'BEGIN{print a1+a2}'
7
root@master:~$ awk -va1=${num1} -va2=${num2} 'BEGIN{print a1-a2}'
-3