ifconfig eth0 | awk -F"[ :]+" 'NR==2{print $4"/"$NF}' 结果:192.168.1.151/255.255.0
ifconfig eth0 | awk -F"[ :]+" 'NR==2{print $4"/"$NF}' 结果:192.168.1.151/255.255.0
ifconfig eth0 | awk -F"[ :]" 'NR==2{print $4"/"$NF}'
结果:/255.255.255.0
ifconfig eth0 | awk -F":" 'NR==2{print $4"/"$NF}'
结果:255.255.255.0/255.255.255.0
其中 -F"[ :]+"
1.内建变量FS保存输入域分隔符的值,默认是空格或tab.我们可以通过-F命令行选项修改FS的值.如$ awk -F:'{print $1,$5}' test将打印以冒号为分隔符的第一,第五列的内容.
2.可以同时使用多个域分隔符,这时应该把分隔符写成放到方括号中,如$awk -F'[:\t]' '{print $1,$3}' test,表示以空格、冒号和tab作为分隔符.
给你举个简单的例子:
root@Bizbox:/# echo "inet addr:192.168.28.205 Bcast:192.168.255.255 Mask:255.255.0.0" | awk -F"[ :]" '{print $3}'
192.168.28.205
root@Bizbox:/# echo "inet addr:192.168.28.205 Bcast:192.168.255.255 Mask:255.255.0.0" | awk -F"[ :]" '{print $2}'
addr
root@Bizbox:/#-F"[ :]+" 这里面的“+”的作用是什么呢?ifconfig eth0 | awk -F"[ :]+" 'NR==2{print $4"/"$NF}'这句命令具体是怎样执行的呢?这些都是AWK正则的语法,+表示一个或多个,这里就表示一个或多个空格或冒号。