正则表达式中awk的学习和使用

AWK是一种优良的文本处理工具。它不仅是linux中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据库访问语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识
一、AWK的用法:
1、在命令行模式的直接使用。 格式为: awk ‘pattern {action}’
2、将awk命令写入脚本,并以#!/bin/awk -f命令解释器作为脚本的首行,设置脚本的可执行权限,通过键入脚本名称来调用它。格式为./testscript.awk filename。等同于shell脚本的方法。
3、将awk命令插入一个单独文件然后执行。格式为 awk -f awkscript filename
第一种格式常见的是awk 'BEGIN {print "this is the start"}{print $1,$2,$3}END{print "this is the end"}' filename。其中BEGIN和END中间是模式,END后是动作。BEGIN和END可以省去,模式一般是匹配搜索使用
二、AWK排查错误常见的问题
1、确保整个AWK用单引号括起来;2、确保单引号内所有的括号或引号成对出现;3、确保用大括号括起动作语句,用小括号括起条件语句;4有时候要检查是否有文件名或者BEGIN等
三、AWK内置字符串变量函数

gsub(r,s)

 

在整个$0中用s代替r

 

gsub(r,s,t)

 

整个t中用s替代r

 

index(s,t)

 

返回s中字符串t的第一位置

 

length(s)

 

返回s长度

 

match(s,r)

 

测试s是否包含匹配r的字符串

 

split(s,a,fs)

 

在fs上将s分成序列a,放在数组a里。返回段数的数值

 

sprint(fmt,exp)

 

返回经fmt格式化后的exp

 

sub(r,s)

 

用$0中最左边最长的子串代替s

 

substr(s,p)

 

返回字符串s中从p开始的后缀部分

 

substr(s,p,n)

 

返回字符串s中从p开始长度为n的后缀部分

 


四、AWK的内置环境变量

$n   当前记录的第n个字段,字段间由FS分隔。  
$0   完整的输入记录。在文本中一般指行信息内容  
ARGC   命令行参数的数目。  
ARGIND   命令行中当前文件的位置(从0开始算)。  
ARGV   包含命令行参数的数组。  
CONVFMT   数字转换格式(默认值为%.6g)  
ENVIRON   环境变量关联数组。  
ERRNO   最后一个系统错误的描述。  
FIELDWIDTHS   字段宽度列表(用空格键分隔)。  
FILENAME   当前文件名  
FNR   同NR,但相对于当前文件。  
FS   字段分隔符(默认是任何空格)。可以用户指定  
IGNORECASE   如果为真,则进行忽略大小写的匹配。  
NF   当前记录中的字段数。$NF指最后一个段内容  
NR   当前记录数。在文本中一般指多少行  
OFMT   数字的输出格式(默认值是%.6g)。  
OFS   输出字段分隔符(默认值是一个空格)。  
ORS   输出记录分隔符(默认值是一个换行符)。  
RLENGTH   由match函数所匹配的字符串的长度。  
RS   记录分隔符(默认是一个换行符)。  
RSTART   由match函数所匹配的字符串的第一个位置。  
SUBSEP   数组下标分隔符(默认值是\034)。  

五、AWK内置操作符

= += -= *= /= %= ^= **=   赋值 如a+=10代表a+10  
?:   C条件表达式,a>b?a:b表示a大于b如为真返回a,如为假返回b  
||   逻辑或。只要一个为真即为真。  
&&   逻辑与。只要一个为假即为假。需两个同时为真才为真。  
~ ~!   匹配正则表达式和不匹配正则表达式。经常针对文本搜索  
< <= > >= != ==   关系运算符  
空格   连接  
+ -   加,减  
* / &   乘,除与求余  
+ - !   一元加,减和逻辑非  
^ ***   求幂  
++ --   增加或减少,作为前缀或后缀。这个一定要区分清楚++a与a++  
$   字段引用  
in   数组成员  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/19080.html