sed and awk 101 hacks.pdf

preview
需积分: 0 51 下载量 111 浏览量 更新于2021-05-13 1 收藏 1.27MB PDF 举报
Sed和Awk是UNIX和Linux系统中极为重要的流编辑器和文本处理工具,它们能够通过简单的命令或脚本高效处理文本文件,实现复杂的文本转换和报告生成。接下来,我们将根据提供的文件内容详细地说明Sed和Awk的关键知识点。 **Sed命令语法和基本命令** - **Sed命令语法**:sed是"stream editor"的缩写,它采用的是基于文本的流处理方式,通过一系列的命令行参数对文本数据进行过滤和转换。 - **Sed脚本执行流程**:sed的执行过程涉及读取输入、处理、输出三个阶段。它首先读取输入数据,然后执行定义好的脚本命令,最后将处理结果输出到标准输出。 - **打印模式空间(命令p)**:在sed中,模式空间是当前正在处理的文本行。命令p用于打印模式空间中的内容。 - **删除行**:sed的d命令可以删除模式空间中的当前行,并且立即开始处理下一行。 - **把模式空间内容写到文件中(w命令)**:sed的w命令可以将模式空间的内容写入指定的文件。 **Sed替换命令** - **sed替换命令语法**:替换命令是最常用的sed功能之一,它允许用户在文件中查找和替换字符串。 - **全局标志g**:标志g(global)表示对找到的每一处匹配都执行替换操作。 - **数字标志和打印标志p**:数字标志用于指定处理输入行中的第几个匹配项,打印标志p用于打印替换后的行。 - **写标志w和忽略大小写标志i**:写标志w将被替换的行写入指定文件,而忽略大小写标志i使得搜索不区分大小写。 - **执行命令标志e和使用替换标志组合**:执行命令标志e允许执行其他命令或脚本的输出,替换标志组合可以组合使用不同的标志以达到特定的替换效果。 **正则表达式** - **正则表达式基础**:sed和awk都支持正则表达式作为搜索模式,用于匹配复杂的文本模式。 - **其他正则表达式**:文档中提到了更多的正则表达式用法,但具体内容未在摘录中给出。 **执行sed** - **单行内执行多个sed命令**:可以使用分号";"分隔同一个sed命令中的多个操作。 - **sed脚本文件**:可以通过脚本文件来执行一系列sed命令。 - **sed注释**:在sed脚本中,可以使用"#"作为注释的开始。 - **直接修改输入文件**:sed的-i选项可以用来直接修改文件内容。 **sed附加命令** - **追加命令(命令a)**、**插入命令(命令i)**和**修改命令(命令c)**:这些命令分别用于在模式空间的指定位置追加、插入和修改文本。 - **打印不可见字符(命令l)和打印行号(命令=)**:l命令可以打印出模式空间中不可见的字符,而"="命令打印当前行号。 - **转换字符(命令y)**:y命令用于转换字符,例如大小写转换。 **保持空间和模式空间命令** - **用保持空间替换模式空间(命令x)**:x命令可以交换模式空间和保持空间的内容。 - **把模式空间的内容复制到保持空间(命令h)、追加到保持空间(命令H)**:h和H命令分别用于复制和追加内容到保持空间。 - **把保持空间内容复制到模式空间(命令g)、追加到模式空间(命令G)**:g和G命令用于将保持空间的内容复制和追加回模式空间。 **sed多行模式及循环** - **读取下一行数据并附加到模式空间(命令N)**:N命令用于将下一行内容附加到模式空间的当前内容后。 - **打印多行模式中的第一行(命令P)和删除多行模式中的第一行(命令D)**:P用于打印多行模式空间中的第一行,而D用于删除并打印模式空间中的第一行。 - **循环和分支(命令b和:label标签)**:b命令用于无条件跳转到脚本的另一个位置,而label标签可以定义跳转目标。 - **使用命令t进行循环**:t命令在前一个替换成功后跳转到脚本的特定位置,类似条件分支。 **Awk语法和基础命令** - **Awk命令语法**:Awk是一种模式扫描和处理语言,它将输入数据视为一系列的记录(通常是行)和字段(记录中的分割部分)。 - **Awk程序结构(BEGIN, body, END)**:Awk程序通常包含三个主要部分:BEGIN块在处理任何输入之前执行,body包含核心处理逻辑,END块在处理完所有输入后执行。 - **打印命令**:Awk的打印命令用于输出文本,通常通过print语句来完成。 - **模式匹配**:Awk允许使用正则表达式进行模式匹配,以决定哪些记录将被处理。 **Awk内置变量** - **FS、OFS、RS、ORS**:Awk预定义的输入和输出字段分隔符和记录分隔符。 - **NR、FILENAME、FNR**:NR是当前处理的记录总数,FILENAME是当前处理的文件名,FNR是当前文件的记录数。 **Awk变量的操作符** - **变量、一元操作符、算术操作符、字符串操作符、赋值操作符、比较操作符、正则表达式操作符**:Awk提供了一套完整的操作符集合,用于处理变量和执行各种比较和转换。 **Awk分支和循环** - **if结构、ifelse结构、while循环、do-while循环、for循环、break语句、continue语句、exit语句**:这些结构提供了基本的控制流,用于在Awk脚本中实现复杂的逻辑。 **Awk关联数组** - **引用数组元素、使用循环遍历awk数组、删除数组元素、多维数组、SUBSEP下标分隔符、用asort为数组排序、用asorti为索引排序**:Awk的关联数组是处理文本数据的强大工具,它允许使用任意字符串作为数组的索引。 **其他Awk命令** - **使用printf格式化输出、awk内置数值函数、随机数生成器、常用字符串函数、GAWK/NAWK的字符串函数、处理参数、OFMT、GAWK内置的环境变量、pgawk–awk运行分析器、位操作、用户自定义函数、使输出摆脱语言依赖、双向管道、系统函数、时间函数、getline命令**:文档中列举了大量Awk高级功能和命令,但具体内容未在摘录中详细说明。 由于OCR扫描的原因,部分内容可能存在识别错误或遗漏,因此在实际使用中应当以完整的书籍内容为准。学习Sed和Awk可以显著提升UNIX和Linux操作效率,对于开发者、系统管理员、数据库管理员或IT管理员来说是非常重要的技能。掌握这些工具,意味着能够快速地进行文本处理、数据提取和报告生成,解决很多日常工作中遇到的问题。
身份认证 购VIP最低享 7 折!
30元优惠券