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

相关推荐

  • 用shell脚本打等腰三角新

       *   ***  ***** *******   预览图形 发现图形由三个变量组成 行数n 每行的空格数a 和每行的符号数b 关系是    a=n-当前行数    b=2xn-1   并且空格都在符号前 根据关系编写脚本 #!/bin/bash read…

    Linux干货 2016-08-22
  • N26 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。    who | cut -d" " -f1 | sort -u    2、取出最后登录到当前系统的用户的相关信息。    who | tail -1 3、取…

    Linux干货 2017-02-16
  • 进程管理常用命令

    Linux系统上的进程查看及管理工具:pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall,…CentOS 5 :SysV initCentOS 6 :upstartCentOS 7 :syst…

    Linux干货 2017-05-17
  • class16高级磁盘管理(二)网络管理(一)

    一、高级磁盘管理(二) 逻辑卷管理器快照 快照是特殊的逻辑卷 快照只有在它们和原来的逻辑卷不同时才会消耗空间。 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。 建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend 放大快照。 使用LVM 快照 为现有逻辑卷创建快照 #lvcreate -L …

    Linux干货 2016-09-05
  • BIND 配置DNS服务器以及子域授权

    1、安装bind      [root@www ~]# yum -y install bind 2、查看安装生成的文件      [root@www ~]# rpm -ql bind | less 3、程序路径     /var/named 4、配置…

    Linux干货 2016-03-22
  • Linux下history命令的介绍

    Linux下history命令的介绍 一、用处 对于Linux而言,命令是人机交互的重要方式,而查看命令历史可以帮助我们了解系统的使用状态、增强安全性也可以调用历史达到快捷操作的目的。 二、命令行历史   执行过的命令会被存入缓存,当正常退出shell时,缓存中的命令会被写入文件中并保存在用户下的隐藏文件文件.bash_history中。当用户登陆…

    Linux干货 2016-07-29