zoukankan      html  css  js  c++  java
  • Linux

    AWK

    AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一;
    awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )。

    AWK 常见参数

    # 默认是执行打印全部 print $0
    # 1为真 打印$0
    # 0为假 不打印
    
    -F   # 改变FS值(分隔符)
    ~    # 域匹配
    ==   # 变量匹配
    !~   # 匹配不包含
    =    # 赋值
    !=   # 不等于
    +=   # 叠加
    		
       # 退格
    f   # 换页
    
       # 换行
    
       # 回车
    	   # 制表符Tab
    c   # 代表任一其他字符
    		
    -F"[ ]+|[%]+"  # 多个空格或多个%为分隔符
    [a-z]+         # 多个小写字母
    [a-Z]          # 代表所有大小写字母(aAbB...zZ)
    [a-z]          # 代表所有大小写字母(ab...z)
    [:alnum:]      # 字母数字字符
    [:alpha:]      # 字母字符
    [:cntrl:]      # 控制字符
    [:digit:]      # 数字字符
    [:graph:]      # 非空白字符(非空格、控制字符等)
    [:lower:]      # 小写字母
    [:print:]      # 与[:graph:]相似,但是包含空格字符
    [:punct:]      # 标点字符
    [:space:]      # 所有的空白字符(换行符、空格、制表符)
    [:upper:]      # 大写字母
    [:xdigit:]     # 十六进制的数字(0-9a-fA-F)
    [[:digit:][:lower:]]    # 数字和小写字母(占一个字符)
    

      AWK 內建变量

    $n            # 当前记录的第 n 个字段,字段间由 FS 分隔
    $0            # 完整的输入记录
    ARGC          # 命令行参数的数目
    ARGIND        # 命令行中当前文件的位置 ( 从 0 开始算 ) 
    ARGV          # 包含命令行参数的数组
    CONVFMT       # 数字转换格式 ( 默认值为 %.6g)
    ENVIRON       # 环境变量关联数组
    ERRNO         # 最后一个系统错误的描述
    FIELDWIDTHS   # 字段宽度列表 ( 用空格键分隔 ) 
    FILENAME      # 当前文件名
    FNR           # 同 NR ,但相对于当前文件
    FS            # 字段分隔符 ( 默认是任何空格 ) 
    IGNORECASE    # 如果为真(即非 0 值),则进行忽略大小写的匹配
    NF            # 当前记录中的字段数(列)
    NR            # 当前行数
    OFMT          # 数字的输出格式 ( 默认值是 %.6g) 
    OFS           # 输出字段分隔符 ( 默认值是一个空格 ) 
    ORS           # 输出记录分隔符 ( 默认值是一个换行符 ) 
    RLENGTH       # 由 match 函数所匹配的字符串的长度
    RS            # 记录分隔符 ( 默认是一个换行符 ) 
    RSTART        # 由 match 函数所匹配的字符串的第一个位置
    SUBSEP        # 数组下标分隔符 ( 默认值是 /034) 
    BEGIN         # 先处理(可不加文件参数)
    END           # 结束时处理
    

      AWK 内置函数

    gsub(r,s)          # 在整个$0中用s替代r   相当于 sed 's///g'
    gsub(r,s,t)        # 在整个t中用s替代r 
    index(s,t)         # 返回s中字符串t的第一位置 
    length(s)          # 返回s长度 
    match(s,r)         # 测试s是否包含匹配r的字符串 
    split(s,a,fs)      # 在fs上将s分成序列a 
    sprint(fmt,exp)    # 返回经fmt格式化后的exp 
    sub(r,s)           # 用$0中最左边最长的子串代替s   相当于 sed 's///'
    substr(s,p)        # 返回字符串s中从p开始的后缀部分 
    substr(s,p,n)      # 返回字符串s中从p开始长度为n的后缀部分
    

      

  • 相关阅读:
    qt忙等与非忙等
    获得文件路径 _pgmptr, _makepath, _splitpath
    RGB2YCbCr RGB2Gray
    qt Cannot connect creator comm socket /tmp/qt_temp.S26613/stub-socket: No such
    64位Ubuntu系统安装OpenCV 2.4.x+ffmpeg 完美解决方案
    vim按下ctrl+s僵死
    win32程序应用mfc库
    error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
    JavaScript中的浅拷贝和深拷贝
    Set和Map
  • 原文地址:https://www.cnblogs.com/sharesdk/p/8696421.html
Copyright © 2011-2022 走看看