目录
一、sed 工具
1. 概述
2. sed 原理
3、常用操作选项
3.1 常用选项
3.2 操作命令
4. sed 的使用
5. 具体操作
5.1 打印输出 p
5.1.1 显示范围、单行、指定行输出、指定往后加几行输出
5.1.2 显示奇偶行
5.1.3 将指定内容的行打印出来
5.1.4 只输出行号
5.2 增加内容 a i
5.2.1 在指定行之前插入
5.2.2 在指定行之后插入内容
5.3 删除 d
5.3.1 全部删除
5.3.2 删除指定行
5.4 替换 c
5.5 搜索替换 s
5.6 插入文件 r
5.7 另存到文件 w
5.8 同时编辑
5.9 分组操作
5.10 读取完退出
5.11 sed 脚本
5.12 高级应用
5.12.1 -r 匹配正则表达式
5.12.2 结合变量使用
一、sed 工具
1. 概述
sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。
sed 命令是利用脚本来处理文本文件。它可以依照脚本的指令来处理、编辑文本文件。主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
总结:
- 文本处理工具,读取文本内容,根据指定的条件进行处理,如删除、替换、添加等;
- 可在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shel脚本,以完成自动化处理任务;
- sed 依赖于正则表达式;
2. sed 原理
工作原理:
- 读入新的一行内容到缓存空间; 从指定的操作指令中取出第一条指令,判断是否匹配pattern;
- 如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;
- 如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;
- 当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;
- 当所有行都处理完之后,结束;
总结:
根据输入的命令,在缓存中操作,逐行对比处理数据,看是否和命令要求匹配,若匹配,就继续后续命令编辑,完成后回到之前步骤,取出下一行指令编辑;若不匹配,则忽略该行,继续回去取出下一条指令执行;所有指令都执行完之后,输出数据到缓存,回到第一步,继续读入下一行内容。直到所有命令执行完成,输出到屏幕。
3、常用操作选项
格式:
- sed [选项] '操作' 参数
- sed [选项] -f scriptfile 参数
3.1 常用选项
-e | 表示用指定命令或者脚本来处理输入的文本文件 进行多次编辑 |
-f | 表示用指定的脚本文件来处理输入的文本文件 指定sed文件名 |
-h | 显示帮助 |
-n | 表示仅显示处理后的结果 取消默认输出 |
-i | 直接编辑文本文件。使用时慎重,会直接修改数据 直接在源文件中修改 |
-i.bak | 修改完配置文件后进行备份 |
-r、-E | 使用扩展正则表达式 |
-s | 将多个文件视为独立文件,而不是单个连续的长文件流 |
3.2 操作命令
“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的“[n1[,n2]]”操作参数 的格式。n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5, 20 动作行为”。
常见操作
-a | 增加 | 在当前行下面增加一行指定内容 |
-c | 替换 | 将选定行替换为指定内容 |
-d | 删除 | 删除选定的行 |
-i | 插入 | 在选定行上面插入一行指定内容 |
-p | 打印 | 如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。 |
-s | 替换 | 替换指定字符 |
-y | 字符转换 |
4. sed 的使用
sed [options] script filename
sed [option]... 'script;script;...' [input file...]
选项 自身脚本语法 支持标准输入管道
- options指的是sed的命令行参数,比较有限。
- script是指需要对输入执行的一个或者多个操作指令,一般需要用单引号括起来,这样可以避免shell对 特殊字符的处理。sed会依次读取输入文件的每一行到缓存中并应用script中指定的操作指令,因此而带 来的变化并不会影响最初的文件(除非option加了-i参数)。
- 每条操作指令由pattern和procedure两部分组成,顾名思义,pattern是匹配的规则,一般为用’/'分隔的 正则表达式(也有可能是行号,具体参见Sed命令地址匹配问题总结),而procedure则是一连串编辑命 令(action)。
总结:
- sed命令+选项 ‘定位+动作+内容’ 文件名
5. 具体操作
注意:一般“ -n ” 和 “ -p ” 一起使用
5.1 打印输出 p
- 查看文件内容
sed '' cs.txt
- 带有自动打印功能,p又再打印一遍
sed 'p' cs.txt
sed -n 'p' cs.txt ### -n 关闭自动打印功能
5.1.1 显示范围、单行、指定行输出、指定往后加几行输出
- 显示范围
- 显示单行
- 显示指定行输出
- 指定往后加几行输出