在代码里偶然看到有一个语句
cat /proc/net/bonding/bond0 |grep Mode|awk '{print$3}
这句话的目的就是去/proc/net/bonding/bon0问价中,查找包含Mode字符的行,取出第三列的字符串。
之前学习shell的时候,看到过awk,这次再学习一下,记录下来,以便以后再用。
awk的基本语法
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
常用参数:
-Fre awk默认的分隔符是空格,可以自己用-F来自定义
'program'
这个语句段必须用单拓号:'和'括起,以防被shell解释。这个程序语句段的标准形式为:
'pattern {action}'
file自然就是解析的文件了,也可以是解析管道符传过来的字符串
awk应用简单举例,拿机子上的/proc/net/arp举例,取出eno16777736的arp信息
[root@bogon ~]# cat /proc/net/arp
IP address HW type Flags HW address Mask Device
192.168.1.101 0x1 0x2 dc:0e:a1:d9:9e:b9 * eno16777736
192.168.1.1 0x1 0x2 8c:21:0a:91:84:9e * eno16777736
IP address HW type Flags HW address Mask Device
192.168.1.101 0x1 0x2 dc:0e:a1:d9:9e:b9 * eno16777736
192.168.1.1 0x1 0x2 8c:21:0a:91:84:9e * eno16777736
表达式1:
[root@bogon ~]# cat /proc/net/arp | grep eno16777736| awk '{print $1,$4}'
192.168.1.101 dc:0e:a1:d9:9e:b9
192.168.1.1 8c:21:0a:91:84:9e
192.168.1.101 dc:0e:a1:d9:9e:b9
192.168.1.1 8c:21:0a:91:84:9e
表达式2:
[root@bogon ~]# awk '/eno16777736/ {print $1,$4}' /proc/net/arp
192.168.1.101 dc:0e:a1:d9:9e:b9
192.168.1.1 8c:21:0a:91:84:9e
192.168.1.101 dc:0e:a1:d9:9e:b9
192.168.1.1 8c:21:0a:91:84:9e
两个表达式起到了同样的效果,学习的多了,开始只知道用表达式1那种,现在知道了表达式二这种,也是小小的进步吧