Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208721
  • 博文数量: 38
  • 博客积分: 1032
  • 博客等级: 少尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 18:14
文章分类

全部博文(38)

文章存档

2017年(2)

2016年(1)

2015年(10)

2012年(3)

2011年(1)

2010年(7)

2009年(14)

分类: LINUX

2010-03-24 07:30:51

 
awk用法总结

awk 的调用有三种方式

1)  awk [option] ‘awk_script’ input_file1 [inputfile2……]

awk 的常用选项有

1-F fs         : 输入记录的字段分隔符

2-f filename    : 从文件filename中读取awk_script

3. –v  var=value  : awk_script设置变量

 

2)  awk_script 放入脚本文件并以#!/bin/awk –f 作为首行,给予脚本执行权限,然后在shell下调用

3)  将所有的awk_script 插入一个单独脚本文件同,然后调用 awk-f  awk的脚本文件 input_file(s)

======================================================================

现主要讨论第一种调用awk 的方式

Awk_script 的组成

Awk_script 由可以由一个awk_cmd或多条awk-cmd组成, 两条命令之间一般以NEWLINE分隔 

awk_cmd 由两部分组成:awk_pattern   {action}

awk_cmd 命令的一般形式

awk ‘ BEGIN { actions}

     awk_pattern {actions}

     ……………………..

     ……………………..

     END { actions}’   filename

其中BEGIN {actions} END {actions} 是可选的

======================================================================

Awk_pattern 有以下几种类型

1)正则表达式   awk_pattern :    /regexp/   (如是正则表达式则用  / /

   Awk中常用的正则表达式有:

       \  ^   $  .   []   |   ()  *  //   通用的regexp 元字符

+  :匹配其前的单个字符以次以上,是awk 自有的,不适用于grepsed

:匹配其前的单个字符1次或0次,是awk 自有的,不适用gf psed

如下面例子:

2)布尔表达式

   ****表达式中可以用  变量和/regexp/

   ****关系操作符:<  >  <=  >=  ==   !=

   *****匹配操作符: value ~ /regexp/   如果value 匹配/regexp/,则返回真

                     Value!~ /regexp/   如果value不匹配/regexp/,则返回真

   *****&&|| 可以连接两个/regexp/ 或者布尔表达式构成混合表达式。!可用在布尔表达式或者/regexp/之前

 

Actions

 Actions 由一条或多条语句或者命令组组成,语句、命令之间用分号(;)分隔。

   Actions中还可以使用流程控制结构的语句

1)  awk的命令

print 参数列表:print 可以打印字符(加双引号)、变量和表达式。是awk 最基本的命令。参数列表要用逗号(,)如果参数间用空格分开,打印出时参数值之间不会有空格

还有printf命令

条件表达式:A?B:C (A 为布尔表达式,B C可以是表达式或者直接值)

当布尔表达式A的值为真时,整个表达式的值为BA的值为假时,整个表达式的值为C

==========================================================================================

 

1)  流程控制结构(基本上使用C语言的语法)

******  if (condition) {then-body} [ else {else-body}]

******  while (condition) {body}

******  do {dody} while {condition}

******  for (initialization; condition; increment) {body}  (C语言FOR 结构语法相同)

****** break 跳出包含它的for while  do-while循环

******continue 跳出 for while do-while 循环的body的剩余部分,而立刻执行下次循环的执行

 

Awk内部变量

FS  输入记录的字段分隔符(默认是空格和制表符)

OFS 输出记录的字段分隔符(默认是空格)

OFMT 数字的输出格式(默认是%.6g

RS    输入记录间的分隔符(默认是NEWLINE

ORS   输出记录间的分隔符(默认是NEWLINE

ARGV 命令行参数数组

ENVIRON 存储系统当前环境变量值的数组,它的每一个成员的索引就是一个环境变量名,而对应的值就是相应环境变量的值,可以通过给ENVIRON数组的成员赋值而以身改变环境变量的值,但是新值只能在awk_script 内有效

 

阅读(2227) | 评论(0) | 转发(0) |
0

上一篇:grep 用法总结

下一篇:sed 用法总结

给主人留下些什么吧!~~