日历

2010年六月
« 5月   7月 »
 123456
78910111213
14151617181920
21222324252627
282930  

最近评论

    AWK的使用

    awk使用 第十二部分 awk主题函数Actions的指令语法

        awk的Actions一般由下列指令(statement)所组成:    
    1、 表达式 ( function calls, assignments..)    
    2、print 表达式列表    
    3、printf( 格式化字符串, 表达式列表)    
    4、if( 表达式 ) 语句 [else 语句]   
    5、while( 表达式 ) 语句    
    6、do 语句 while( 表达式)   
    7、for( 表达式; 表达式; 表达式) 语句    
    8、for( variable in array) 语句    
    9、delete    
    10、break    
    11、continue    
    12、next    
    13、exit [表达式]    
    14、语句
        在awk 中大部分指令和C 语言中的用法一致,这里仅介绍比较常用或容易混淆的指令的用法。

    AWK的使用

    awk的使用 第十一部分 awk中常用的模式

       awk 通过判断模式(Pattern)的值来决定是否执行其后对应的动作(Actions)。首先来看一下awk中几个常见的模式,在前十部分中,有一些模式已经做了介绍,在这里再总结一下:           
      

      1、BEGIN是awk 的保留字,是一种特殊的模式。                
         BEGIN 成立(其值为true)的时机是:“awk 程序一开始执行,还没有读取任何数据之前”。 所以在BEGIN{ Actions} 语法中,Actions只在程序一开始执行时被执行一次。当awk 从数据文件读入数据行后,BEGIN 便不再成立,所以不论数据文件有多少数据行数据,Actions也不会被再次执行。一般情况下,把“与数据文件内容无关”和“只需执行ㄧ次”的部分放在以BEGIN 为模式的Actions中。
        比如:[root@myfreelinux pub]# cat BEGIN.awk
    #!/bin/awk -f
    BEGIN{
    FS=”[ \t:]+”; #设置awk分割字段的默认方式
    RS=””  #设置awk分割数据行的方式

    AWK的使用

    awk的使用 第十部分 使用awk编写递归程序的实例

        awk 中除了函数的参数列(Argument List)上的参数(Arguments)外,所有变量无论在什么地方出现,均被视为全局变量。全局变量的生命周期持续到程序结束。全局变量不论在function外还是function内都可以使用,只要变量名称相同,所使用的就是同一个变量。但是递归函数会调用会调用到函数本身,所以编写这里函数是需要特别注意。
         例如:编辑一个awk脚本程序,内容如下:
    [root@myfreelinux pub]# cat argument.awk
    #!/bin/awk -f
    BEGIN{
    x=35;
    y=45;
    test_variable(x)
    printf(“Return to main: arg1=%d,x=%d,y=%d,z=%d\n”,arg1,x,y,z)
    }
    function test_variable(arg1)