Sed:流编辑器

使用模式空间做匹配,将文件读取到模式空间,根据给的模式做匹配,匹配到则根据给的sed命令做处理,不匹配则丢弃,sed默认不修改源文件,只对模式空间中的文件数据做处理,并打印到屏幕上。sed支持正则表达式,默认使用基本正则表达式。 以下是常用方法介绍 一个文件做演示


Sed基本用法: Sed [options] ‘AddressCommand’ file …… Options: -n:静默模式,不再默认匹配显示模式空间中的内容 -i:直接修改原文件,建议不使用,除非你真地有把握 d在后面有说明,删除匹配到的字符 -i还有一个特殊的用法,及时改了源文件也有备份的 -i.bak :修改前先复制一份源文件,.bak自己定义,修改完成后会多出一个以.bak结尾的备份文件。你也可以写成.txt。 -e script -e script:可以同时执行多个脚本对文件进行处理 -r:使用扩展正则表达式,这个就不用演示了吧


** Address: 1、 startline,endline 例:1,100** $:表示最后一行 2、/regexp/:正则表达式 **3、/pattern1/,/pattern2/:**第一次被pattern1匹配到的行开始,至到第一次被pattern2匹配到的行结束,这中间的所有行 4、linenumber:指定的行 **5,、startline +N :从startline开始,向后的N+1行 **


Command段d:删除符合条件的行 p:打印符合条件的行 你会发现为什么每行都会重复的显示,因为sed的默认动作就是显示到屏幕,而我们有指定p,又打印一次,所以就是看到的重复行,空行都不放过哦。 -n和p常组合使用,之打印输出匹配到的行 a \string:在指定的行后面追加新行,内容为string,不指定则全文见追加新行 i \string:在指定的行前面追加新行,内容为string w file:将符合条件的行保存至指定的文件中 r file:将指定的文件内容添加到符合条件的行处。


s/pattern/string/修饰符:查找并替换,默认只替换每行中的第一个被模式匹配到的字符串,s///,s###,s@@@:替换与之不同字符串时不需要转义,例如匹配/时替换为#,用s@/@#@g,不需要转义符。 修饰符:** g**:全局替换,被匹配到的都替换;i:忽略字符大小写 ;

用与之不同的字符串匹配则不需要转移符 **():使用正则表达式的分组,取值\1,\2,\3,**使用-r 选项用扩展正则表达式,centos7用的获取IP地址的方法! &:引用模式匹配到的模式 看一下是不是所有匹配到#开头的后面都添加了//字符! 希望可以帮助到大家,谢谢!!!