目录
示例12:输出包含单词wood 的行,\<、\>代表单词边界
示例4:将文件/etc/hostname(主机名)添加到包含the的每行以后
示例5:在第4行后插入一个新行,内容为youshoujiuxing
一、Sed编辑器
1.1 Sed概述
(1)sed编辑器时一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
(2)sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要存储在一个命令文本文件中。
1.2 Sed工作流程
sed 的工作流程主要包括读取、执行和显示三个过程: 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。 执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。 显示font>:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
PS:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。
1.3 Sed基本用法
sed -e '编辑指令' 文件1 文件2
sed -n -e '编辑指令' 文件1 文件2
sed -i -e '编辑指令' 文件1 文件2
sed -f 脚本文件 文件1 文件2
1.4 Sed常用选项
-e 或--expression=:表示用指定命令或者脚本来处理输入的文本文件。
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n、--quiet 或 silent:表示仅显示处理后的结果。
-i.bak:直接编辑文本文件。
-r, -E 使用扩展正则表达式
-s 将多个文件视为独立文件,而不是单个连续的长文件流
1.5 sed命令的常用操作
“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的“[n1[,n2]]”操作参数的格式。n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5,20 动作行为”。常见的操作包括以下几种。
常见的操作
a | 增加,在当前行下面增加一行指定内容。 |
c | 替换,将选定行替换为指定内容。 |
d | 删除,删除选定的行。 |
i | 插入,在选定行上面插入一行指定内容。 |
p | 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。 |
s | 替换,替换指定字符。 |
y | 字符转换。 |
= | 打印行号。 |
l(小写L) | 打印数据流中的文本和不可打印的ASCII字符(比如结束符s、制表符\t) |
二、用法示例
2.1 输出符合条件的文本(p 表示正常输出)
以test.txt文件为例
sed -n 'p' test.txt 输出所有内容,等同于 cat test.txt