如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务。
为了获取所需信息,文本必须格式化,也就是说要使用域分隔符来划分抽取域,分隔符可以使任意字符。
awk语言的最基本功能是在文件或字符串中基于指定规格浏览和抽取信息。awk抽取信息后,才能进行其他文本操作。awk脚本通常用来格式化文本文件中的信息。
1.调用awk
①命令行的方式:
[-F 域分隔符]是可选的,awk使用空格作为缺省的域分隔符
②将所有awk命令插入到一个文件,是awk程序可执行,然后使用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用。
③将所有的awk命令插入到一个单独文件,然后调用。
2.awk脚本
在命令中调用awk时,awk脚本由各种操作和模式组成。
awk每次读一条记录或一行,并使用指定的分隔符分隔指定域。
①模式和动作
任何awk语句都是由模式和动作组成。模式部分决定动作语句何时触发及触发事件。处理即对数据进行的操作。如果省略模式,动作将时刻保持执行状态。
模式可以使任何条件语句或复合表达式或正则表达式。
模式包含两个特殊字符BEGIN和END。
BEGIN语句设置计数和打印头。使用在任何文本浏览动作之前。
END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志,不特别指明模式,awk总是匹配或打印行数。
3.域和记录
awk执行时,其浏览域标记为$1,$2,...$n。$n表示参照第n域,$0表示所有域,用逗号来做域分隔。
打印一个或所有域,使用print命令。这是一个awk动作,动作语法用‘{ }‘括起来。
①抽取域
例:
首先要抽取文件中的信息,将它们划分成域的形式。
②保存awk输出
有两种方式保存shell提示符下的awk脚本输出。
其一是使用输出重定向符号 >文件名
第二种方法是使用tee命令,在输出到文件的同时输出到屏幕。
③使用标准输入
实际上任何脚本都是从标准输入中接受输入的。
④打印所有记录
⑤打印单独记录
使用$1,$2...$n,域标示之间用逗号隔开
⑥打印报告头
⑦打印信息尾
4.awk中的正则表达式
这里正则表达式用斜线括起来, /字符串/
①匹配
使域号匹配表达式,使用符号‘~‘后紧跟正则表达式,也可以使用if语句。awk中if语句后面的条件用()括起来。
②精确匹配
③不匹配
④小于
⑤小于等于
⑥大于
⑦设置大小写
为查询大小写信息,可以使用[ ]符号
⑧任意字符
⑨或关系匹配
使用或关系符时,语句必须用圆括号括起来
⑩行首
其他
&& AND:语句两边必须同时为真
|| OR:语句两边同时或其中一边匹配为真
! 非 求逆
shell之文本过滤(awk),布布扣,bubuko.com
原文:http://www.cnblogs.com/L-H-R-X-hehe/p/3816190.html