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)
上一篇 2017-05-21 21:49
下一篇 2017-05-22 08:25

相关推荐

  • 专属个人的聊天机器人的实现——图灵机器人

    先体验一下:图灵机器人智能聊天体验:http://www.tuling123.com/openapi/cloud/proexp.jsp 1、简介        本篇为大家介绍使用图灵机器人api实现聊天机器人的方法,该api本身已经拥有了智能聊天的功能,但我们可以自定义知识库的方式简单实现专属个人的聊天机器人。 2、开…

    Linux干货 2016-03-28
  • lvs应用

    练习一:负载均衡一个php应用: 测试是否需要会话保持; 是否需要用到共享存储;    为了检测是否需要会话保持和共享存储,要在两台主机上分别配置LAMP环境;这样就使得两者之间没有了共享存储;负载均衡使用nat模型的wlc算法,并且不使用lvs的长连接选项。数据库故意使用了相同的账号密码来进行安装。 步骤一:配置环境: 使用yum分别安…

    Linux干货 2016-11-11
  • grep的基本用法详解

     grep是linux上常用的一个文本处理工具之一。它有着强大的文本处理能力,学会它,可以让工作更有效率。 一、初识grep   grep: Global search Regular Experssion and Print out line   从名字上也可以直观的了解到它是基于正则表达式进行全局搜索,并把结果打印到屏幕上来…

    系统运维 2015-05-25
  • Linux初识

    Linux

    2018-03-07
  • Linux基础学习总结(六)

    一、完成如下练习 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; vim: cp /etc/rc.sysinit /tmp/rc.sysinitvim/tmp/rc.sysinit:%s@^[[:space:]]\+@#&@g sed: sed “s/…

    Linux干货 2016-10-30
  • 了解Nginx

    Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝…

    Linux干货 2016-11-07