`

[shell]awk

阅读更多
grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理
-------------------------------------------------------
本篇文章我们主要为大家介绍 AWK 是如何工作的。

AWK 工作流程可分为三个部分:

读输入文件之前执行的代码段(由BEGIN关键字标识)。
主循环执行输入文件的代码段。
读输入文件之后的代码段(由END关键字标识)。
命令结构:

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
下面的流程图描述出了 AWK 的工作流程:



1、通过关键字 BEGIN 执行 BEGIN 块的内容,即 BEGIN 后花括号 {} 的内容。
2、完成 BEGIN 块的执行,开始执行body块。
3、读入有 \n 换行符分割的记录。
4、将记录按指定的域分隔符划分域,填充域,$0 则表示所有域(即一行内容),$1 表示第一个域,$n 表示第 n 个域。
5、依次执行各 BODY 块,pattern 部分匹配该行内容成功后,才会执行 awk-commands 的内容。
6、循环读取并执行各行直到文件结束,完成body块执行。
7、开始 END 块执行,END 块可以输出最终结果。
开始块(BEGIN)
开始块的语法格式如下:

BEGIN {awk-commands}
开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。

一般情况下,我们可以在开始块中初始化一些变量。

BEGIN 是 AWK 的关键字,因此它必须是大写的。

注意:开始块部分是可选的,你的程序可以没有开始块部分。

主体块(BODY)
主体部分的语法格式如下:

/pattern/ {awk-commands}
对于每一个输入的行都会执行一次主体部分的命令。

默认情况下,对于输入的每一行,AWK 都会执行命令。但是,我们可以将其限定在指定的模式中。

注意:在主体块部分没有关键字存在。

结束块(END)
结束块的语法格式如下:

END {awk-commands}
结束块是在程序结束时执行的代码。 END 也是 AWK 的关键字,它也必须大写。 与开始块相似,结束块也是可选的。

《awk工作原理》https://www.runoob.com/w3cnote/awk-work-principle.html
--------------------------------------------------------------------
关于awk内建变量个人见解,简单易懂

解释一下变量:

变量:分为内置变量和自定义变量;输入分隔符FS和输出分隔符OFS都属于内置变量。

内置变量就是awk预定义好的、内置在awk内部的变量,而自定义变量就是用户定义的变量。

FS(Field Separator):输入字段分隔符, 默认为空白字符
OFS(Out of Field Separator):输出字段分隔符, 默认为空白字符
RS(Record Separator):输入记录分隔符(输入换行符), 指定输入时的换行符
ORS(Output Record Separate):输出记录分隔符(输出换行符),输出时用指定符号代替换行符
NF(Number for Field):当前行的字段的个数(即当前行被分割成了几列)
NR(Number of Record):行号,当前处理的文本行的行号。
FNR:各文件分别计数的行号
ARGC:命令行参数的个数
ARGV:数组,保存的是命令行所给定的各参数
自定义变量的方法

方法一:-v varname=value ,变量名区分字符大小写。
方法二:在program中直接定义。

https://www.runoob.com/linux/linux-comm-awk.html
分享到:
评论

相关推荐

    shell awk实用实例教程

    shell awk 实用程序 介绍awk的使用用例 对于处理文件内容比较方便 供学习参考使用

    shell awk脚本总结.txt

    我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...

    Shell AWK使用手册

    SHELL AWK使用手册,供大家参考学习

    Shell AWK详细功能介绍

    Shell AWK详细功能介绍 如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务。它在文本浏览和数据的熟练使用上性能优异。

    shell awk从入门到精通

    shell awk从入门到精通是本人经过多年工作总结的经验。 本资源适用linux爱好者、shell爱好者及大数据爱好者。

    shell awk sed

    本资料涵盖了关于shell教程,sed和awk教程,设备驱动开发,和深入理解内核,多为英文原版资料。

    xml语法合法性 xml 格式验证xml格式检查 shell awk sed实现

    shell awk sed实现xml语法合法性 xml 格式验证xml格式检查 。不需要scheam文件,只验证符号的合法性

    UNIX Shell awk sed 实例 精解 (第4版)

    linux下常用脚本命令集合 : awk sed bash shell Shell范例精解(第4版)

    shell、awk编程教材

    shell、awk编程教材

    unix shell awk 修改ini文件的脚本

    临到要用的时候发现unix下面通常都是用c实现的ini文件操作,网上搜了半天没有现成可用的,真是郁闷,只好自己写了一个,这个程序是对INI文件进行修改的,其实只要删掉几句就变成了查找的了。

    linux shell awk 编程

    awk作为sehll脚本开发的三大利器之一,该文档对awk语法做了详细的介绍病附带示例,唯一不足之处在于没有形成规范的doc文档

    Unix基础、AWK、SHELL

    Unix基础、AWK、SHELL 正则表达式.doc 编辑器.doc Unix基础知识与Shell编程.doc

    Shell脚本之awk篇

    awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行扫描与处理。数据可 以来自标准输入、文件、管道。

    bash&vim&awk

    bash shell awk vim bash shell awk vim bash shell awk vim bash shell awk vim

    shell编程,sed,awk,grep等教程整理

    shell编程,sed,awk,grep等教程

    awk&sed 详解

    awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell

    shell脚本awk按照某列排序输出

    for i in `awk -F ‘[ |]’ ‘{print NR,$2}’ mscto.txt|sort -rn -k2|awk ‘{print $1}’`; do awk ‘NR==’$i’ {print}’ mscto.txt; done ———————————— 43 108|64 33 46|54 81 38|24 72 33|38 64 ...

    awk命令详解大全

    awk命令详解大全,讲解详细,精心编排~带目录

    Sed与awk 中文第二版

    sed和awk是用户、程序员和管理员应用的工具。之所以称为sed是因为它是一个流编辑器(stream editor),用于对许多文件执行一系列的编辑操作。awk是根据它的开发者aho、weinberger和kernighan命名的。awk是一种编程语言...

Global site tag (gtag.js) - Google Analytics