awk用法指北

awk用法指北


awk是对Linux系统中文本三剑客之一。其功能强大,支持条件判断、数组、循环,并且内置大量函数,近乎于一门独立的编程语言。

awk基本语法
awk [option] ‘program’ FILE

最常用选项

-F “” 指定字段分隔符 //分隔符为PATTERN
-v VAR=value 指定变量

AWK变量

awk中变量替换不能使用引号

  • 内建变量
    FS 输入分隔符
    OFS 输出分隔符
    RS 输入时的换行符
    ORS 输出时的换行符
    NF 字段数量
    NR 行数 //多文件行数累加
    NFR 行数 //多文件行数分别计算
    ARGC 命令行参数的个数
    ARGV 保存命令行中给定的各个参数 //数组形式保存各个参数,ARGV[0]为awk ARGV[1]为$1 ARGV[2]为$2..

  • 自定义变量
    选项中自定义变量
    awk -v VAR=value
    在program直接定义
    awk ‘{VAR=value}’

program

  • print
    print item1,item2..
    用,(逗号)为个元素分隔符
    输出可以是字符串、数值、当前记录的字段、变量或者awk表达式
    省略item为打印整行

  • printf
    printf FORMAT item1,item2..
    FORMAT为格式符必须给出 printf不能自动换行,需要换行时需要给出\n
    FORMAT需要指出后面每一个item的格式符
    格式符
    %c 显示字符的ASCII码 %d %i 显示十进制整数 %e %E 显示科学计数法数值 %f 显示浮点数%g %G以科学计数法或浮点形式显示数值 %s 显示字符串 %u 显示无符号整数 %% %自身
    修饰符
    #[.#] 第一个数字显示宽度,第二个数字小数点后的精度。第一个数字前-为左对齐(默认右对齐)+显示数值的符号

  • 操作符
    算数操作符
    x+y x-y x*y x/y x^y x%y -x正数转换为负数 +x字符串转换为数值
    字符串操作符
    无符号表示字符串连接 
    赋值操作符
    = += -= *= /= %= ^=
    ++ 
    比较操作符
    > >= < <= != ==
    模式匹配符
    ~ 匹配 !~ 不匹配
    逻辑操作符
    &&与 ||或 !非
    函数
    fun_name(p1 p2 p3)
    条件表达式 
    selector?if-true-expr:if-false-expr

  • 定界符 
    定界符为空时表示处理文件的每一行
    /正则表达式/仅处理正则表达式匹配的行 关系表达式处理为真的行与bash不同真为非0值

  • 常用动作
    表达式
    控制语句
    组合语句
    输入声明
    输出声明

  • 控制语句
    if(condition){statements} //单分支if语句 
    if(condition){statements}else{statements} //双分支if语句
    while(condition){statements} //while循环
    do{statements}while(condition) //do-while循环,判断之前先进行一次循环体
    for(expr1;expr2;expr3){statements} //C语言风格for循环
    switch(expr){case 1:statement1;case 2:statement2;..default:statement //switch语句case中匹配的项可以是常量也可以是正则匹配}
    break[#] //跳出#层循环
    continue //提前结束本轮循环,继续下一轮循环
    next //控制行间跳转
    delete array[index] //删除数组中的某条
    delete array //删除整个数组
    exit //退出

  • 数组
    数组形式
    array[index] 
    index可使用任意字符串,需要用双引号“”;数组不存在,在引用时自动创建此元素,初始化为“空串”
    for(var in array){for-body} //遍历数组,var为数组索引

  • 内置函数
    length([String]) //获得字符串的长度
    sub(r,s[,t]) //用r表示的模式查找t中的字符串,并将第一次出现的内容替换为s表现的内容
    gsub(r,s[,t]) //用r表示的模式查找t中的字符串,并将全部出现的内容替换为s表现的内容

原创文章,作者:easyTang,如若转载,请注明出处:http://www.178linux.com/76665

(0)
easyTangeasyTang
上一篇 2017-05-21 21:49
下一篇 2017-05-22 08:25

相关推荐

  • select应用详解及rpm、yum使用说明

    一.select相关用法解析 1.select variable in list;do   变量不用加$,和for极为相似         循环体     done 2.    (1)sel…

    Linux干货 2016-08-29
  • 手动自制Mini Linux

        linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个mini linux的安装制…

    Linux干货 2016-05-03
  • Linux基本知识之echo命令详解

    该博文以CentOS6.8_x86_64系统为基础,Xshell使用pts/X终端登录CentOS6.8系统,以root身份登录系统。 为什么学习echo命令?     echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串。…

    Linux干货 2016-07-29
  • linux基础入门之二

    linux基础入门之二 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.cp文件复制: 常用选项: -i:交互式复制,即覆盖之前提醒用户确认; -f:强制覆盖目标文件; -r, -R:递归复制目录; -d:复制符号链接文件本身,而非其指向的源文件; -a:-dR –…

    Linux干货 2016-09-26
  • Shell编程(1)

    Shell编程:     编程语言:机器语言、汇编语言、高级语言         高级语言:             静…

    Linux干货 2016-08-18