Linux自动化运维(Shell与Ansible)(微课版) 课件 5-2-sed流编辑器_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 5-2-sed流编辑器_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 5-2-sed流编辑器_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 5-2-sed流编辑器_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 5-2-sed流编辑器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sed流编辑器与awk文本

处理工具任务2:sed流编辑器目录/Contents0102sed工作原理sed基本语法01sed工作原理sed最初是由贝尔实验室的计算机科学家LeeE.McMahon(李·E.麦克马洪)在1973—1974年开发的。sed这个名字来源于“streameditor”,意为流编辑器,它最初在UNIX操作系统中开发和使用,现在也被移植到很多Linux发行版中。目前,大部分Linux发行版使用的是由自由软件基金会(FreeSoftwareFoundation,FSF)管理和维护的GNUsed。FSF是一个非营利性组织,致力于推广自由软件和开放源码。FSF维护和发布了GNUsed,它是一个免费的、开源的sed版本,根据sed的原始设计进行改进和扩展,提供了更多的特性和功能。sed工作原理sed工作原理vi、vim这类文本编辑器,需要打开文本文件后才能编辑和操作,与vi、vim这些交互式文本编辑器不同,sed是一种非交互式编辑器,它通过命令行或脚本来操作文本文件,可对文本文件进行批量替换、提取、过滤、查找和删除,而不需要打开文件,非常适合用于自动化和批量处理。sed借鉴了ed编辑器的语法和许多有用的功能,支持正则表达式,接收来自文件和管道的输入以及来自标准输入的输入。sed按行处理文本,根据给定的编辑指令对每一行进行匹配和替换操作。它使用模式匹配来确定需要处理的行,并根据指定的规则进行相应的替换或其他操作。其基本工作流程如下。01sed首先从输入文本中逐行读取文本,并将每一行存储在称为模式空间(patternspace)的缓冲区中。02sed检查模式空间中的行是否与给定的模式匹配,如果匹配成功,则执行相应的编辑指令。例如s/old/new/g命令用于替换文本中的所有old为new。sed会将缓冲区中的文本作为输入,执行编辑命令,并将结果存储在输出缓冲区中。03如果编辑命令是s,则sed会将输出缓冲区中的结果写回到缓冲区中,覆盖原有的文本。如果编辑命令是其他命令,例如d、p、a等,则sed会将输出缓冲区中的结果输出到标准输出或指定的文件中。04sed处理完当前行后,将结果输出到标准输出。如果指定了输出文件,则可以将结果写入文件。05如果还有未处理的文本行,继续处理下一行。重复上述步骤,直到处理完所有的文本行。sed工作流程02sed基本语法sed基本语法sed是一种流编辑器,常用于在命令行中对文本进行处理和替换。它按照行处理输入文本,根据给定的编辑指令进行匹配和替换操作,并将结果输出到标准输出。sed支持正则表达式以及模式匹配和替换功能。其基本语法如下:其中,options表示sed的选项,例如-n、-i、-f等。files表示要编辑的文件,如果没有指定文件,也可以从标准输入读取文本。command表示sed的命令,也可以理解成编辑指令。命令使用一对引号标识,可以是单个命令或由多个命令组成,多个命令之间用分号隔开。sed命令基本示例如下:其中,s是命令,表示替换;old_string是要被替换的字符串或正则表达式的模式;new_string是替换后的新字符串;g是替换标志,即替换所有匹配到的字符串;file.txt是要进行替换操作的目标文件。sed[options]'command'filessed's/old_string/new_string/g'file.txtsed选项sed选项可以控制sed的运行方式,改变sed的工作流程。常用的sed选项下表所示。序号选项描述1-n不自动输出模式空间的内容,用于禁止自动输出模式空间的内容,通常配合p命令使用来输出指定行。示例:sed-n'2p'file.txt2-e允许在同一个sed命令中使用多个子命令。示例:sed-e's/old_string/new_string/g'-e'3d'file.txt3-f将命令保存在文件中。使用-f选项来读取命令,可避免在命令行中使用很长的命令。示例:sed-fcommands.txtfile.txt4-i直接修改文件,而不是将结果输出到标准输出。示例:sed-i's/old_string/new_string/g'file.txt5-r使用扩展正则表达式。示例:sed-r's/([a-z]+)([0-9]+)/\2\1/g'file.txt6-h显示帮助信息。示例:sed-hsed命令sed命令分为两类,分别是地址指令和动作指令。常用的sed指令下表所示。地址指令,也称为定位指令,用于指定要应用动作指令的文本行范围,可以使用数字、正则表达式、first~step语法等。地址指令可以单独使用,也可以与动作指令一起使用。动作指令,用于对已定位的文本行进行操作,包括删除、修改、添加、输出等。动作指令必须与地址指令配合使用才能生效。序号指令描述1p输出指定行或匹配行。示例:sed-n'2,4p'file.txt2=输出行号。示例:sed'3='file.txt3a在指定行之后追加文本。示例:sed'2aNewline'file.txt4c用新文本替换匹配的行。示例:sed'/RHEL/cUbuntuLinux'file.txt5d删除匹配的行。示例:sed'3d'file.txt6i在指定行之前插入文本。示例:sed'3i\headertext'file.txt7a在指定行之后应用动作指令。示例:sed'3a\append_string'file.txt8s将匹配的文本替换为指定内容。示例:sed's/RHEL/rhel9/g'file.txt9y将模式空间中的字符替换成指定的字符,比如y/source-chars/target-chars/,其中source-chars和target-chars的长度必须相同。示例:sed'y/RHEL/cent/'file.txt10r从指定文件中读取内容,并将内容插入指定行之后。示例:sed'/OpenEuler/rfile.txt'file1.txt11w将匹配的行写入指定文件。示例:sed-n'/RHEL/woutput.txt'file1.txt12q退出sed。示例:sed'3q'file.txtsed数据定位方法在sed中,可以使用数字和正则表达式来精确选择要操作的文本行,数字通常用于定位文件中的行号,正则表达式则可以用来匹配符合特定模式的文本。常用的sed数据定位方法如下表所示。序号数据定位方法描述1number直接根据行号匹配。示例:sed-n'3p'file.txt2first~step从第first行开始,每隔step行进行操作。示例:sed-n'3~2p'file.txt3$匹配最后一行。示例:sed-n'$p'file.txt4/regexp/匹配正则表达式regexp的行。示例:sed-n'/Open/p'file.txt、sed'/^Open/d'file.txt5addr1,addr2匹配从addr1行到addr2行范围内的行,addr1和addr2可以是数字、正则表达式或first~step语法。示例:sed

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论