Linux命令之awk

来源:互联网 发布:php 返利网站源码 编辑:程序博客网 时间:2024/06/05 10:57

awk命令:
指令格式:awk ‘{pattern + action}’ {filenames}
其中 pattern 表示 awk 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

(1) 记录与字段
awk每次读取文件的一行后,存入字段变量01,2,NF中,默认分隔符为空格或制表符。(内置变量NF为记录的字段个数)

echo hello the world | awk ‘{print $1,$2}’ #输出hello the

(2) 字段分隔符
通过-F或FS变量来设置分隔符

awk –F: ‘{print $1}’ filename              #设置分隔符为:,并打印第一个字段awk ‘BEGIN {FS = “:”} {print $1}’ filename     #同上

(3) 常用内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

(4) 表达式与操作符
表达式由变量、常量、函数、正则表达式、操作符组成,awk中变量有字符变量和数字变量。如果没有初始化变量,默认为空字串或0。注意,字符操作一定要加引号。
操作符与C语言类似。

(5) 高级应用
if条件判断;while循环;for循环;函数
常用函数:
[1]算术函数
函数名 说明
atan2( y, x ) 返回 y/x 的反正切。
cos( x ) 返回 x 的余弦;x 是弧度。
sin( x ) 返回 x 的正弦;x 是弧度。
exp( x ) 返回 x 幂函数。
log( x ) 返回 x 的自然对数。
sqrt( x ) 返回 x 平方根。
int( x ) 返回 x 的截断至整数的值。
rand( ) 返回任意数字 n,其中 0 <= n < 1。
srand( [Expr] ) 将 rand 函数的种子值设置为 Expr 参数的值,或如果省略 Expr 参数则使用某天的时间。返回先前的种子值。

举例:awk 'BEGIN{srand();fr=int(100*rand());print fr;}' #获得两位整型数

[2]字符串函数
函数名 说明
gsub( x, y,z ) 在字符串z中使用字符串y替换与正则表达式x相匹配的所有字符串,z默认为0sub(x,y,z)z使yxz0。
index( x,y ) 返回 x在y中出现的位置,从1开始。若x不存在于y中,则返回0。
length( x ) 返回 x 参数指定的字符串的长度,若未给出x参数,则返回整个记录的长度。
split( x,A,y ) 将字串x按正则表达式y分割为数组A中的元素。

举例:awk 'BEGIN{info="this is a test2010test!";print index(info,"test");}' #定位test出现的位置,结果为11

0 0