linux shell中的流编辑器sed的使用

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之前的内容

 

替换标记:

数字:表明新文本将替换第几处模式匹配的地方

g:表示新文本将会替换所有匹配的文本

\1:子串匹配标记,前面搜索可以用元字符集\(..\),

&:保留搜索到的字符用来替换其它字符

 

sed匹配字符集

^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。

$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。

. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

猜你喜欢

转载自www.cnblogs.com/fusheng11711/p/10794997.html
今日推荐