您的位置:首页 > 运维架构 > Linux

linux awk 学习笔记

2009-05-04 09:42 344 查看
从格式化报文或从一个大的文本文件中抽取数据包,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 ~]#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: