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
下一篇 2017-05-22

相关推荐

  • Linux的基础文件管理命令

    Linux用于管理文件的一些基本常见的命令如下: ls:  列出指定目录下的清单    -a  显示所有文件包括隐藏文件    -l  显示文件的详细信息    -d  查看目录自身   示例: cat:  可查看指定路径下的文件文本 fi…

    Linux干货 2016-11-06
  • linux下NTP服务

    linnux NTP

    2017-10-18
  • DNS实验

    本实验需的注意问题:      1、运营商的服务器需要更改根指向服务器地址      2、根服务器上的配置文件/etc/named.conf需要将"."根区域禁用;      3、更改区域数据库文件的属组为named;c…

    Linux干货 2016-12-12
  • for、while、until循环

    一、for循环          for 变量名 in 列表;do             循环体     &nbsp…

    Linux干货 2016-09-19
  • centos启动模式更改

    临时更改   用单用户的方法 系统开机 然后在等待界面是按esc 然后会进入这个界面,根据下面的提示进入 按a 会进入下面这个界面 在最后一行输数字代表第几模式   文件更改   centos6   系统启动时会初始化init init 的配置文件是/etc/inittab文件 用vim /etc/inittab进入查…

    2017-07-22
  • 我的第一篇博客

        第二天,很早的来到,不知道做些什么,未来也l许很忙碌,希望能够一直坚持,不管是难吃的饭菜,还是不良的作息,起码做个对得起这四个半月的人吧…

    Linux干货 2017-07-11