sed流编辑器
23.3.1 sed strem editor 流编辑器
sed编辑器是一行一行的处理文件内容的。正在处理的内容存放在模式空间(缓冲区)内,处理完成后按照选项的规定进行输出或文件的修改。
接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;
sed也是支持正则表达式的,如果要使用扩展正则加参数-r
sed的执行过程:
1、 一次读取一行数据
2、 根据我们提供的规则来匹配相关的数据,比如查找root。
3、 按照命令修改数据流中的数据,比如替换
4、 将结果进行输出
5、 重复上面四步
23.3.2 如何使用
语法格式:sed [options] ‘[commands]’ filename
例1:替换字符串中的部分内容
echo "good moring Mr Wang" | sed 's/Wang/Hu/'
输出结果:
good moring Mr Hu
sed选项|参数
options:
-a在当前行下面插入文件
-n读取下一个输入行,用下一个命令处理新的行而不是用第一个命令
-e执行多个sed指令
-f运行脚本
-i编辑文件内容 ***
-i.bak编辑的同时创造.bak的备份
-r使用扩展的正则表达式
命令:
i在当前行上面插入文件
c把选定的行改为新的指定的文本
p打印 ***
d删除 ***
r/R读取文件/一行
w另存
s查找
y替换
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面
D删除\n之前的内容
P打印\n之前的内容
替换标记:
l 数字:表明新文本将替换第几处模式匹配的地方
l g:表示新文本将会替换所有匹配的文本
l \1:子串匹配标记,前面搜索可以用元字符集\(..\),
l &:保留搜索到的字符用来替换其它字符
sed匹配字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。