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 实用程序 介绍awk的使用用例 对于处理文件内容比较方便 供学习参考使用
我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...
SHELL AWK使用手册,供大家参考学习
Shell AWK详细功能介绍 如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务。它在文本浏览和数据的熟练使用上性能优异。
shell awk从入门到精通是本人经过多年工作总结的经验。 本资源适用linux爱好者、shell爱好者及大数据爱好者。
本资料涵盖了关于shell教程,sed和awk教程,设备驱动开发,和深入理解内核,多为英文原版资料。
shell awk sed实现xml语法合法性 xml 格式验证xml格式检查 。不需要scheam文件,只验证符号的合法性
linux下常用脚本命令集合 : awk sed bash shell Shell范例精解(第4版)
shell、awk编程教材
临到要用的时候发现unix下面通常都是用c实现的ini文件操作,网上搜了半天没有现成可用的,真是郁闷,只好自己写了一个,这个程序是对INI文件进行修改的,其实只要删掉几句就变成了查找的了。
awk作为sehll脚本开发的三大利器之一,该文档对awk语法做了详细的介绍病附带示例,唯一不足之处在于没有形成规范的doc文档
Unix基础、AWK、SHELL 正则表达式.doc 编辑器.doc Unix基础知识与Shell编程.doc
awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行扫描与处理。数据可 以来自标准输入、文件、管道。
bash shell awk vim bash shell awk vim bash shell awk vim bash shell awk vim
shell编程,sed,awk,grep等教程
awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell
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命令详解大全,讲解详细,精心编排~带目录
sed和awk是用户、程序员和管理员应用的工具。之所以称为sed是因为它是一个流编辑器(stream editor),用于对许多文件执行一系列的编辑操作。awk是根据它的开发者aho、weinberger和kernighan命名的。awk是一种编程语言...