从格式化报文或从一个大的文本文件中抽取数据包,a w k是一种自解释的编程语言

在命令中调用a w k时,a w k脚本由各种操作和模式组成。

awk执行时,其浏览域标记为$ 1,$ 2 . . . $ n。这种方法称为域标识。
使用$ 1 , $ 3表示参照第1和第3域,注意这里用逗号做域分隔。用$0。表示所有域

awk条件操作符
操作符       描述操作符描述
<          小于                > =        大于等于
< =      小于等于        ~            匹配正则表达式
= =       等于               !~           不匹配正则表达式
复合模式或复合操作符用于形成复杂的逻辑操作,复杂程度取决于编程者本人。有必要
了解的是,复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:
&&   AND   语句两边必须同时匹配为真。
||   O R           语句两边同时或其中一边匹配为真。
!                   非求逆

从s h e l l中向a w k传入字符串
例:
[root@localhost ~]# echo "test"  | awk '{print length($0)}'
4
[root@localhost ~]# STR="mydoc.txt"
[root@localhost ~]# echo $STR | awk '{print substr($STR,7)}'
txt
[root@localhost ~]# STR=waovWG
[root@localhost ~]# echo $STR | awk '{if($STR ~ /[^a-z A-Z]/) print "1"}'
[root@localhost ~]# STR=12LIW
[root@localhost ~]# echo $STR | awk '{if($STR ~ /[^a-z A-Z]/) print "1"}'
1
[root@localhost ~]#

向一行a w k命令传值
在a w k执行前将值传入a w k变量,需要将变量放在命令行中,格式如下:
awk 命令变量=输入文件值
例如:
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           190         70        119          0          9         40
-/+ buffers/cache:         21        168
Swap:          509          0        509
[root@localhost ~]# free -m | awk '{if ($4<=LIMIT) print $0}' LIMIT=120
Mem:           190         70        119          0          9         40
[root@localhost ~]# free -m | awk '{if ($4<=LIMIT) print $0}' LIMIT=250
Mem:           190         70        119          0          9         40
-/+ buffers/cache:         21        168
[root@localhost ~]# free -m | awk '{if ($1 ~ /Mem/ && $4<=LIMIT) print $0}' LIMIT=250
Mem:           190         70        119          0          9         40
[root@localhost ~]#