awk简介

作者: 蜘蛛鱼 | 来源:发表于2019-03-27 21:04 被阅读0次

    本文参考awk英文Tutorial和三十分钟学会awk,对awk做了一个非常简单的介绍,如果需要更详细的用法可以去看上面的链接。

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。在linux中,grep 更适合单纯的查找或匹配文本, sed 更适合编辑匹配到的文本, awk 更适合格式化文本,对文本进行较复杂格式处理。

    awk把文件逐行读入,然后以空格为默认分隔符将每行切片,切开的部分再进行各种处理。

    基本语法

    awk的基本语法如下:
    awk 动作 文件名

    awk [options] 'pattern{action}' file
    

    pattern 表示 AWK 在数据中查找的内容(就是要表示的正则表达式),用斜杠括起来。
    action 是在找到匹配内容时所执行的一系列命令。
    awk会根据空格和制表符,将每一行分成若干字段,依次用$1$2$3代表第一个字段、第二个字段、第三个字段等等。

    举个例子。awk '{print $5}' demo.txt ,表示输出信息的第五列。
    $*表示第*列。
    $0表示当前整个行。
    $NF为最后一列。

    pattern

    pattern是条件,符合这个条件的行才会被继续处理。

    1. BEGIN语句块:在程序开始时执行,它只执行一次,在这里可以初始化变量.BEGIN是AWK的关键字,因此它必须为大写,注意,这个语句块是可选的。
    2. BODY语句块:此块中的命令会对输入的每一行执行,我们也可以通过提供模式来控制这种行为。注意,BODY语句块没有关键字。
    3. END语句块:在程序的最后执行,END是AWK的关键字,因此必须为大写,它也是可选的。

    options

    -F设置输入分隔符。awk默认使用空格作为分隔符,连续多个空格算作一个。如果用其他分隔符,可以用-F参数制定分隔符为冒号。比如:awk -F ':' '{print $5}' demo.txt

    可以用-v FS='#'来指定输入分隔符,-v OFS='--' 来指定输出分隔符(参考下面的内置变量)。

    action

    awk '{print $1 $2}' 表示连接在一起输出。
    awk '{print $1,$2}' 表示用分隔符隔开输出。

    variable

    内置变量:FS(输入分隔符,默认是空格和制表符)
    OFS(输出分隔符,默认为空格)
    RS(输入时行分割符,默认为换行符)
    ORS(输出时行分割符,默认为换行符)
    NF(当前行被分隔成几列)
    NR(当前处理的行号)
    FILENAME(当前文件名)
    ARGC(命令行参数个数)
    ARGV(命令行参数的数组)
    FNR(各文件分别记数的行号,处理>1文件时)。

    内置变量不需要$来调用。其中,ARGV[0] = awk。之后是其他的参数(files)。

    自定义变量有两种方法:

    1. -v 变量名 = 变量的值 (区分大小写)。
    2. 在{}中定义。

    函数

    awk还提供了一些内置函数,方便对原始数据的处理。
    内置函数的列表可以查看这里

    使用脚本文件

    awk [options] -f file ....

    相关文章

      网友评论

          本文标题:awk简介

          本文链接:https://www.haomeiwen.com/subject/vtmjvqtx.html