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

    awk学习笔记【一】

    admin发表于 2014-06-04 11:28:12
    love 0

    今天主要介绍下awk中内置的String函数和awk中内置的变量。

    awk中内置的string函数

    • index(in, find): 在 string “in”中查找 find 的第一次出现位置,返回的find在in中第一个字符出现的位置,从1开始
      awk 'BEGIN { print index("peanut", "an") }'
      # 打印3
      
    • length(string) : 返回字符串的长度,如果是number类型,返回对应字符的长度
    • match(string, regexp) : 正则匹配regexp的规则,如果匹配,则返回对应第一个字符的位置
    • split(string, array, fieldsep) : 按照fieldsep分割字符串,并将结果放置到array中,array的下标从1开始
      split("yaronspace.cn", fields, ".")
      # fields[1] = "yaronspace"
      # fields[2] = "cn"
      
    • sprintf(format, expression1, …): 格式化字符串
    • sub(regexp, replacement, target): 将第一个匹配的regexp的部分使用replacement替代,替代后的结果还是保存在target变量中。所以target必须是变量,不可为字符常量
      str = "yaronspace.cn";
      sub(/yaronspace/, "xiaofangdeng", str);
      # str="xiaofengdeng.cn"
      

      使用&符号引用匹配regexp部分的字符长,示例如下:

      str = "yaronspace.cn";
      sub(/yaronspace/, "&_xiaofangdeng", str);
      # str = "yaronspace_xiaofangdeng.cn"
      
    • gsub(regexp, replacement, target):  与sub功能类似,但是会替换所有匹配regexp的子串,g代表”global”的含义
    • substr(string, start, length) : 获取子串
    • tolower(string) : 转化为小写
    • toupper(string) : 转化为大写

    awk中内置的变量

    • FS: Input Field Seperator variable: 对每行记录的分割符,可以通过-F参数修改,或者在awk文件中,直接使用FS=”XX”进行修改
    • OFS : Output Field Seperator variabble: 输出时默认每个记录的分隔符,默认为空格
      $ awk -F':' '{print $3,$4;}' /etc/passwd   # $3 $4以空格分割
      $ awk -F':' 'BEGIN{OFS="_"} {print $3, $4}' # 此时$3 $4是以_分割
      
    • RS : Input Record Seperator variable: 记录的默认分隔符,默认为\n换行符
      可以修改,如将其修改为\n\n,以两个空行为分隔符
    • ORS: Ouput Record Seperator variable: 默认的记录的输出的分隔符,默认为\n
    • NR: Number of records variable: 当前已读取记录数,默认情况为当前的行数
    • NF: Number of fields vairable : 当前记录的域的个数
    • FILENAME : Name of the current input file
    • FNR: Number of Records relative to the current input file : 当awk的输入文件只有一个时,NR == FNR;当awk的输入文件时多个时,FNR是当前文件的当前行数,NR是全局的行数

    参考文章:

    1. http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html

    2. http://www.thegeekstuff.com/2010/01/8-powerful-awk-built-in-variables-fs-ofs-rs-ors-nr-nf-filename-fnr/

    您可能对下面文章也感兴趣:

    • awk中ord的实现:将字符转化对应的ascii码
    • awk学习笔记之正则表达式
    • js中substring函数的用法
    • js中的split函数的用法
    • java中的日期由String转换为Date


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