码迷,mamicode.com
首页 > 系统相关 > 详细

Linux-sed命令详解

时间:2015-07-25 20:08:13      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:linux   sed   sed 详解   

sed是平时运维工作中较为常用的命令之一,周末时间整理下之前的笔记,并记录下来。sed是一个行文本编辑器,对纯ASCII码文本按行处理。sed在处理文本的时候,逐行将内容读取到内存中做处理,并将处理结果输出。这段内存空间称为“模式空间”,因为 sed并不一定每一行都处理,可以根据一定的模式匹配某些行进行处理。默认不修改源文件,仅对模式空间中的数据做处理。处理结束后将模式空间中的内容打印出来。


sed几个语法规则:

1sed startline,endline  file

从起始行到结束行,如1,100,从第一行到第100

2、模式匹配行

   sed /^root/ file root开头的行

3、/模式1/,/模式2/  表示该文件第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,这中间的所有行

4、只给一个数值,行号  表示精确指定特定的行

 sed 100 file  精确处理第100,$表示最后一行  sed $ file $-1表示倒数第二行

5、指定起始行,使用+N,表示从指定行开始,向后的N,一共为N+1行内容

sed 2,+10 file


sed中常用的几个命令:

    d:删除指定的行

技术分享

技术分享


从第一行开始,删除向后一行,一共删除两行

技术分享


    

    p:显示符合条件的行

下边的例子,符合条件的显示了两次,这是由于sed命令默认情况下还要将模式空间中的内容也显示出来,而p命令则是显示匹配到的行,所以一共显示了两行

技术分享   

-n 只显示符合条件的行:

技术分享

a:用法 a \string---表示在指定的行后追加新行,内容为string

技术分享

若要在匹配行后增加两行,string\n换行即可

技术分享

i \string:表示在指定的行前面添加新行,内容为string,\n换行

技术分享

r filename: 将指定的文件的内容添加至符合条件的行处

在第二行后边添加另外一个文件的内容,/root/tt是另外一个文本文件路径

技术分享

多行处理

技术分享

w filename:将指定范围内的内容另存到指定的文件中

下边例子中/tmp/t2是文件路径

技术分享

s : 查找并替换   s/匹配模式/要替换的内容/   分隔符不仅限于/,可以是其他符合如s#匹配模式#要替换的内容#

技术分享

默认是只替换每行中第一次匹配到的字符串

技术分享


如果要每行中匹配到的所有字符串都被替换,需要使用下边两个参数:

  g:全局替换

  i:查找时忽略字符大小写

技术分享

技术分享


sed 中的后向引用:

&表示引用模式匹配的整个字符串

技术分享

后向引用:

技术分享

只引用匹配到的内容的一部分的时候,必须使用后向引用

如将匹配到的单词的l字符大写

技术分享

Sed 默认不会修改源文件,如果需要对源文件直接做修改,使用-i选项即可.

-r :默认情况下sed只支持基本正则,-r使的sed可以使用扩展的正则表达式

如,删除文件中以空白字符后边加#开头的行中的开头的空白字符及#

技术分享

本文出自 “diannaowa” 博客,请务必保留此出处http://diannaowa.blog.51cto.com/3219919/1678320

Linux-sed命令详解

标签:linux   sed   sed 详解   

原文地址:http://diannaowa.blog.51cto.com/3219919/1678320

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!