zoukankan      html  css  js  c++  java
  • awk用法笔记

    awk

    awk的基本用法

    • awk [ options ] program FILE ...
      • program : PATTERN{ACTION STATEMENTS}
      • ACTION STATEMENTS支持使用多条语句,语句间使用分号分隔
    • awk [ options ] -f program-file FILE ...

    awk常用选项(options)

    • -F 指明输入数据时的字段分隔符
      • 多分隔符'%| '+[% ]+
    • -v VAR=VALUE 自定义变量

    awk内建变量

    awk内部引用变量无需使用$

    • FS(input field seperator) 输入时字段分隔符 默认为空白字符 可以使用-F指定分隔符
    • OFS(onput field seperator) 输出时字段分隔符 默认为空白字符
    • RS(input record seperator) 输入时换行分隔符 默认为换行符
    • ORS(onput record seperator) 输出时换行分隔符 默认为换行符
    • NF(number of field) 每一行的字段数量
      • $NF 最后一列字段
    • NR(number of record) 行的数量
    • FNR(file number of record) 各文件单独计数行号
    • FILENAME 当前文件名
    • ARGC 命令行参数的个数
    • ARGV 数组,保存命令行所给定的各参数

    awk的操作符

    • + - * / ^ % 算术运算
    • > < == >= <= 比较运算
    • = += -= *= /= ++ -- 赋值运算
    • && || ! 逻辑运算
    • ~ !~ 模式匹配符 判断符号前的字符串是否匹配符号后的pattern

    PATTERN

    • empty 空模式 匹配每一行
    • relational expression 关系表达式 一般为比较大小 返回bool型
    • /regular expression/ 正则表达式模式 仅处理被模式匹配的行
    • /pat1/,/pat2/ 行范围
    • BEGIN/END
      • BEGIN{} 仅在开始处理文件之前执行一次
      • END{} 仅在文件处理完毕之后执行一次

    print

    # 打印多个字段时使用逗号分割,默认输出分隔符为空格
    awk '{ print item1, item2 … }' FILE
    • $0 打印整行字符 可省略
    • 逗号 逗号 输出分隔符为空格
    • 双引号 双引号 不解析变量 输出字符串本身
    • 空格 空格 输出字段没有分隔符

    printf

    # 格式化输出
    awk '{ printf FORMAT, item1, item2 … }' FILE
    格式符
    • %c 显示字符的ASCII码
    • %d %i 显示十进制证书
    • %e %E 科学计数法数值显示
    • %f 浮点数
    • %g %G 以科学计数法或浮点数形式显示数值
    • %s 字符串
    • %u 无符号证书
    • %% 百分号自身
    修饰符
    • %[-][#[.#]]d
      • 第一个数字控制显示宽度
      • 第二个数字控制浮点精度
      • -# 表示左对齐 默认右对齐
      • +# 显示数值的符号

    ACTION中的控制语句

    • if (condition){statments} else {statments} 多分支if语句
    • while (condition){statments} while循环
    • do {statments} while (condition) do while 循环
    • for (exp1;exp2;exp3){statments} for循环
    • selector?if-true:if-false 三元运算表达式
    • switch (expression){case VALUE stetement;case VALUE stetement ...} switch多分支语句
    • break``continue``exit 循环控制语句
    • delete array[index]``delete array 删除数组或数组元素
    • next 提前结束本行处理 进入下一行处理

    awk数组

    • 如果数组元素事先不存在,在调用时会自动创建此元素,并将其初始化为空值
    • 在awk的数值运算中,任意字符串均被隐式转换为0
    • 判断数组中是否存在某元素使用index in array,返回bool值
    # 统计当前各网络状态数量
    [root@stardust ~]# netstat -a |awk '/^tcp/ {state[$NF]++} END { for (a in state) print a,state[a] }'
    
    # 统计文件各单词的出现数量
    [root@stardust ~]# awk '{for(i=1;i<=NF;i++){S[$i]++}} END{for(a in S)print a,S[a]}' FILE

    awk常用内置函数

    • rand() 返回0-1间的随机浮点数
    • length() 获取字符串长度
    • sub() 字符串查找替换
    • gsub() 全局字符串查找替换
    • split() 字符串切割
    • system() 执行系统命令

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    mysql 数值函数
    java服务器简单实现
    利用monkeyrunner实现Android屏幕连续截图
    (Access denied for user 'root'@'localhost' (using password: NO))
    Java 基础之 static 静态
    天坑 之 Eclipse J2EE Preview 运行正确项目一直显示http 404
    Java web 实现 之 Filter分析ip统计网站的访问次数
    JSP 实现 之 读取数据库显示图片
    【转】焦虑、渴望中挣扎的我们,如何定义成功和失败?
    【转】美团点评技术团队金融核心交易系统可用性7个9是这样炼成的
  • 原文地址:https://www.cnblogs.com/hemingyuan/p/7914790.html
Copyright © 2011-2022 走看看