zoukankan      html  css  js  c++  java
  • Linux命令简单操作之awk

    awk

    命令格式:

        awk ‘BEGIN{commands} pattern {commands} END{commands}’file

    工作方式:

        1.执行BEGIN{commands}语句块中语句,可选的语句块

        2.从文件或者stdin中读取一行,然后执行{commands},重复这个过程,直到文件全部被读取完

        3.当读至输入流末尾是,执行END{commands}语句块

    特殊变量:

        FILENAME:awk浏览的文件名

        NR:记录数量,执行过程中对应于当前行号

        NF:字段数量,执行过程中对应于当前行的字段数

        FS:设置分隔符,命令行 -F

        $0:执行过程中当前行的文本内容

        $1:第一个字段的文本内容

        $2:第二个字段的文本内容,以此类推

    print&printf打印输出的函数

      print的参数是以逗号进行分隔时,参数打印时则以空格作为定界符,awk的print语句中,双引号是被当做拼接操作符使用的  

      printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

    流程控制语句

      if(condition)else{}

      while(){}

      do{}while()

      for(;;)等 

    内建字符串控制函数:

        1.length(string):返回字符串的长度

        2.index(string,search_string):返回search_string在字符串中出现的位置

        3.substr(string,start_pos,end-pos):在字符串中从start-pos开始到end-pos位置,生成子串

       4.split(string,array,delimiter):用delimiter生成一个字符串列表,并将该列表存入数组,delimiter默认使用当前FS值。

       5.sub(regex,replace_str,string):将正则表达式匹配到的第一处内容替换成replace_str

       6.gsub(regex,replace_str,string):替换正则表达式匹配到所有的内容

       7.match(regex,string):检测正则表达式是否能够匹配字符串

    应用:

      1.从文件或者stdin中读取一行,循环执行{commands},直到读完

      echo "aXbX cXdXe a;b;cX d;e" | awk -F"[X|;| ]+" 'BEGIN{print "begin:"} {for(i=1;i<=NF;++i){++S[$i];printf("$%d=%s ",i,$i)}} END {print "end:"; for(i in S) print i, S[i]}'

      2.split函数

  • 相关阅读:
    coredump文件设置及调试
    github上传本地代码库步骤
    ubuntu上SVN版本升级到1.7
    ubuntu 上samba创建共享组目录
    linux下创建只有某个用户组可用的文件夹
    usermod -a表示在原来所属组的基础上追加
    linux mount
    Ubuntu Bash and Dash
    svn co 默认密钥' GNOME keyring
    精简版ffmpeg编译脚本
  • 原文地址:https://www.cnblogs.com/luyanhong456/p/7663019.html
Copyright © 2011-2022 走看看