IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    awk简明教程

    rock发表于 2014-02-22 21:43:19
    love 0

    转自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201010308465339/

    awk使用格式:

    awk -F分隔符 参数 'BEGIN{预处理部分} {真正的处理部分} END{善后处理工作}' 待处理文件。

    -F -F后面紧跟着分隔符,如-F:,表示以“:”作为列与列之间的分隔符。

    参数 传递给.awk文件的参数。内置变量ARGC是命令行参数的个数,ARGV是命令行参数数组。

    其中'BEGIN{预处理部分} {真正处理部分} END{善后处理工作}',可以写在一个.awk文件中。

    也使用-f filename.awk来调用.awk文件。

    举例:

    编写一个awk脚本,名字为file.awk:

    BEGIN{ #特别注意,这个“{”只能紧跟着BEGIN,而不能放在下一行。

    printf("BEGIN\n");

    #在使用命令行时,可以使用-F,指定分隔符。

    #在使用.awk文件文件时,可以在BEGIN修改内置变量的值,比如,修改默认的分隔符。

    #FS=":",相当于-F:

    #完成初始化,设定工作。
    }

    {
    for(i=1;i
    {
    printf("%s",$i);
    }
    printf("\n");
    }
    END{ #特别注意,这个“{”只能紧跟着END,而不能放在下一行。
    printf("END\n");

    #在这里可以回复shell内置变量的值

    #完成变量的恢复工作。
    }

    待处理文件 将要进行处理的文件。

    一、内置变量表 //内置变量是可以直接使用的。 $0就表示一行。

    在awk中,记录表示一行,字段表示一列。

    属性 说明
    $0 当前记录(作为单个变量) //$0表示待处理文件的一行
    $1~$n

    当前记录的第n个字段(一个字段,表示一列),字段间由FS分隔

    //$1~Sn表示待处理文件的第一列,第二列~第n列

    FS

    输入字段分隔符(即一列和一列的分隔符) 默认是空格

    //可以用-F参数重新设定,比如-F:,表示以“:”作为分隔符。也可以在.awk文件的BEGIN部分对FS重新赋值,比如FS=":"

    NF

    当前记录中的字段个数,就是有多少列

    //表示待处理文件有多少列

    NR 已经读出的记录数,就是行号,从1开始
    RS 输入记录他隔符(即一行和一行的分隔符) 默认为换行符
    OFS 输出字段分隔符 默认也是空格
    ORS 输出记录分隔符 默认为换行符
    ARGC 命令行参数个数 //传递给.awk脚本文件的参数个数。
    ARGV 命令行参数数组 //传递给.awk脚本文件的参数数组。
    FILENAME 当前输入文件的名字
    IGNORECASE 如果为真,则进行忽略大小写的匹配
    ARGIND 当前被处理文件的ARGV标志符
    CONVFMT 数字转换格式 %.6g
    ENVIRON UNIX环境变量
    ERRNO UNIX系统错误消息
    FIELDWIDTHS 输入字段宽度的空白分隔字符串
    FNR 当前记录数
    OFMT 数字的输出格式 %.6g
    RSTART 被匹配函数匹配的字符串首
    RLENGTH 被匹配函数匹配的字符串长度
    SUBSEP \034


沪ICP备19023445号-2号
友情链接