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

相关推荐

  • 2016-08-10作业

    1、编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname is `hostname`" echo "IPv4 is `ifconfig | sed -n &#03…

    Linux干货 2016-08-15
  • 运维面试题, 不知是否正确的答案

    1、简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。 握手: client 发送请求SYN到 server; 状态:server;初始状态为LISTEN,client 发送SYN后变为SYN_SENT server 发送ACK回应,并发送SYN请求到 client;状态:服务器收到SYN后,变为SYN_RCVD,发送ACK+SYN后,变为ES…

    Linux干货 2016-06-23
  • LVM相关使用

    前言: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分…

    Linux干货 2017-08-13
  • 03硬链接和软链接的区别和联系

    首先我们需要了解linux下硬链接以及软连接的基本概念. 硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用. 软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件. 硬链接和软连接之间的区别: 1.硬链接和原来的文件没有什么区别,而且共享一…

    Linux干货 2016-10-20
  • ​20151208完成了第二天课程中的第一课:Osey Linux发行版(01)

    完成了第二天课程中的第一课:Osey Linux发行版(01) 今天公司晚上有加班,回来晚了。只完成了第一课:Osey Linux发行版(01) 简要笔记如下: Linux哲学思想:    1、一切皆文件:             把几乎所有的资源,包括硬件设备都组织为文件格式;…

    Linux干货 2015-12-10
  • Linux的文件系统和目录

    Linux的文件系统和目录 Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图: 文件系统和目录:   详细用法如下 / bin     存放用户使用的基本命令(可执行程序,二进制文件),它是不能单独分区的 boot    跟内核…

    2017-03-26