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 ....

相关文章

  • Tip-Linux Awk

    AWK 简介 Awk is abbreviated from the names of the developer...

  • AWK简介

    Awk是一种非常通用的编程语言,用于处理文件。我们将只教您足够的理解这一页中的例子,再加上一个smidgen。 为...

  • awk简介

    本文参考awk英文Tutorial和三十分钟学会awk[https://github.com/mylxsw/gro...

  • 4.Linux三剑客之awk命令

    转自https://www.cnblogs.com/ginvip/p/6352157.html awk简介 awk...

  • Linux awk 命令详解(一)

    目录 一、awk简介及常见用法二、awk的过滤的机制BEGIN{ }END{ }指令三、awk数值/字符串比较/逻...

  • linux中的awk命令详解

    1、AWK简介 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 2、AWK语法 awk [选项参数] ...

  • awk

    awk简介 awk在unix时候已经出现了。在linux上跑的,很多都是gun版的awk,简称gawk,以下简称a...

  • awk命令简介

    在今天的工作中,我想从文件file1中读取某一列。如果在以前,碰到这样的问题,我一定会通过如下语句实现: new ...

  • 从零开始学习Linux(四十三):Shell编程之awk命令

    1、awk命令简介 awk命令是一种处理文本文件的语言,是一个强大的文本分析工具。awk命令也可以叫awk编程,能...

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

网友评论

      本文标题:awk简介

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