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在文本处理中的应用 在日常工作中,尤其是在技术支持领域,经常会遇到需要处理文本文件的情况。无论是哪种类型的数据库,最终都可以将其导出为文本格式,这为我们...
在IT领域,Shell和Awk是两种非常强大的命令行工具,尤其在文本处理和数据分析方面。本教程将深入探讨这两个工具的结合使用,提供一系列实用的实例,帮助你提升工作效率。 **Shell** 是Unix和Linux操作系统中的命令...
### Unix Shell Awk 修改Ini文件的脚本解析 在Unix环境下,经常需要处理各种配置文件,其中.ini格式的配置文件非常常见。这类文件通常用于存储应用程序的设置信息,包括数据库连接、路径设置等。本文将深入探讨如何...
在IT领域,尤其是在Linux系统管理中,Bash Shell、awk和sed是不可或缺的工具,它们在文本处理和自动化任务执行方面发挥着重要作用。本指南将深入解析这些工具的使用实例和精解,帮助读者理解并掌握这些强大的命令行...
在IT领域,shell、awk和sed是三种非常重要的命令行工具,它们在Linux和Unix系统中扮演着核心角色。这些工具极大地提高了用户处理文本、自动化任务以及管理系统的效率。接下来,我们将详细介绍这三个工具以及与之相关...
shell awk sed实现xml语法合法性 xml 格式验证xml格式检查 。不需要scheam文件,只验证符号的合法性
在本文中,我们将深入探讨`shell`中的`awk`命令,一个强大的文本分析工具,特别适用于处理Linux系统中的日志文件和数据处理。`awk`是基于模式扫描和处理的,它允许用户通过指定规则来对输入进行操作。下面我们将详细...
SHELL编程是Unix/Linux操作系统环境...总的来说,SHELL和AWK都是Unix/Linux环境中非常实用的工具,它们结合使用可以实现高效的数据处理和任务自动化。通过学习和掌握这两门技术,用户可以更好地管理和优化自己的系统。
awk作为sehll脚本开发的三大利器之一,该文档对awk语法做了详细的介绍病附带示例,唯一不足之处在于没有形成规范的doc文档
Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...
本压缩包文件包含的“Unix基础、AWK、SHELL”主题,涵盖了Unix操作系统的入门知识、AWK编程语言以及Shell脚本编程。以下是这些知识点的详细讲解: 1. **Unix基础** - **目录结构**:Unix采用层次化的目录结构,根...
- **将shell命令的执行结果送给awk处理**:通过管道将shell命令的输出传递给awk进行进一步处理。 - **shellscript程序读awk的执行结果**:awk的输出可以被shell脚本捕获并使用。 - **在awk中执行shell命令行**:使用...
本文将深入探讨shell编程,以及与之紧密相关的sed、awk和grep命令,这些都是Linux系统中进行文本处理和数据操作的重要工具。 首先,让我们了解什么是Shell编程。Shell是操作系统提供的一个接口,允许用户与系统内核...
bash shell awk vim bash shell awk vim bash shell awk vim bash shell awk vim
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 ...