1.awk是一种编程语言,程序有一个主循环维持,主循环负责对文件的每行进行处理
基本概念:
BEGIND:用于在主输入循环之前执行
主循环:对输入文件的行进行处理
END:循环执行后执行
记录:输入文件的每一行称为一个记录
域:记录中的每一个字符串称为一个域,域的分割符是空格键或tab键以及其它指定的键,默认是空格键,tab键看做是几个连续的空格键
$1:表示第一个域
$2:表示第二个域
$0:表示所有的域
用法一:模式匹配
awk'/模式/{动作}'文件
[root@zhu1 ~]# nl zhu.txt 1 ming yue ji shi you. 2 ba jiu wen qing tian 3 bu zhi tian shang gong que goad 4 #jin xi shi he nian root oo* 5 #an good man [root@zhu1 ~]# awk '/^#/{print "ni hao awk"}' zhu.txt ni hao awk ni hao awk
用法二:默认与分割符是空格键
[root@zhu1 ~]# nl zhu.txt 1 ming yue ji shi you. 2 ba jiu wen qing tian 3 bu zhi tian shang gong que goad 4 #jin xi shi he nian root oo* 5 #an good man [root@zhu1 ~]# awk '{print $1}' zhu.txt ming ba bu #jin #an
-F:可以改变域分隔符
awk-F"分隔符"'{}'文件
[root@zhu1 ~]# awk '{print $1}' zhu.txt ming ba bu #jin #an [root@zhu1 ~]# awk -F "s" '{print $1}' zhu.txt ming yue ji ba jiu wen qing tian bu zhi tian #jin xi #an good man
$后可以使用变量
[root@zhu1 ~]# awk '{print $3}' zhu.txt ji wen tian shi man [root@zhu1 ~]# awk 'BEGIN {m=1;n=2} {print $(m+n)}' zhu.txt ji wen tian shi man
awk关系运算符及其意义
<:小于
>:大于
<=:小于等于
>=:大于等于
==:等于
!=:不等于
~:匹配正则表达式
!~:不匹配正则表达式
利用awk取出ip地址
[root@zhu1 ~]# ifconfig eth0 | grep 'inet addr'|awk -F : '{print $2}'| awk '{print $1}' 192.168.1.107
结合正则表达式的用法
[root@zhu1 ~]# ifconfig eth0 | grep 'inet addr' | awk -F [:" "]+ '{print $4}' 192.168.1.107
第二种用法:
[root@zhu3 ~]# ifconfig eth0 | awk -F [:" "]+ 'NR==2 {print $4}' 192.168.70.133 [root@zhu3 ~]# ifconfig eth0 | awk -F '[ :]+' 'NR==2 {print $4}' 192.168.70.133
[:""]:表示以:或空格作为分隔符,+表示前面冒号或空格的0个或1个