zoukankan      html  css  js  c++  java
  • gawk快速入门

    基本定义:

    gawk 的主要功能是针对文本的每一行执行被指定的 actions。

    命令格式:

    gawk option program file

    option:

      -F 指定的分隔符,默认的分隔符是空格,可以指定多个分隔符,例如-F ":|;|.",就是以:或者;或者.为分隔符。

      -f program file

      -mf 要处理的最大字段数

      -mr 数据文件中的最大数据行数

    program:

      可以是用'{}'括起来的程序脚本或者使用-f program指明的程序脚本文件。

      例如'{print "hello world!"}',若有多个脚本语句,则语句间使用;隔开,例如'{print "hello world!"; print "hello world again!"}'

    file

      输入文件的路径,通常我们也可以通过管道输入而不是用文件。

    BEGIN和END

      正常情况下,gawk脚本是对行做处理,若我们希望对行做处理或者后做些什么事情,那么我们可以使用BEGIN关键字和END关键字,例如:

      gawk ‘BEGIN{print "Begin:"}{print "Processing ...$0"}END{print "End"}’

      该程序只会在开头和结尾打印Begin和end,中间会打印Processing ...所有行。

    程序语法

    内建变量:(gawk引用变量是不加$)

      FS  输入字段分割符,同-F

      OFS  输出字段分隔符

      RS  输入数据行分隔符

      ORS    输出数据行分隔符

      FIELDWIDTHS  输入字段每个字段的长度,例如:gawk 'BEGIN{FIELDWIDTHS="2 4 5 6"}{print $1 $2 $3 $4}'

      ARGC  当前命令行参数个数

      NF    字段总数

      RF   数据行数

    自定义变量

      gawk的变量没有类型,变量名由字母、数字及下划线组成,但不能以数字开头,大小写敏感。

      字符串用双引号括起来,数字则可直接赋值。gawk 'BEGIN{test="this is a test"; print test; test=100; print test}'

      有时我们希望把变量传递进去gawk,我们可以在gawk脚本命令行上直接加上变量的定义,例如gawk '{test="this is a test"; print test; print test2}' test2=200;这样test2就被传递进去了,注意test2要放在后面。可是这种方法有个问题,该test2在BEGIN程序脚本中不生效,要想其生效,可以gawk -v test2=200 'BEGIN{test="this is a test"; print test; print test2}' ,注意:-v要放在前面。

    数组变量

      待续

      

  • 相关阅读:
    Golang之字符串格式化
    BZOJ 4513: [Sdoi2016]储能表 [数位DP !]
    BZOJ 3329: Xorequ [数位DP 矩阵乘法]
    BZOJ 1833: [ZJOI2010]count 数字计数 [数位DP]
    HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]
    未完
    [Miller-Rabin & Pollard-rho]【学习笔记】
    BZOJ 3551: [ONTAK2010]Peaks加强版 [Kruskal重构树 dfs序 主席树]
    BZOJ 3123: [Sdoi2013]森林 [主席树启发式合并]
    BZOJ 3545: [ONTAK2010]Peaks [Splay启发式合并]
  • 原文地址:https://www.cnblogs.com/ManMonth/p/4389942.html
Copyright © 2011-2022 走看看