三剑客之sed
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三剑客之sed相关的知识,希望对你有一定的参考价值。
Sed:流编辑器,使用模式空间做匹配,将文件读取到模式空间,根据给的模式做匹配,匹 配到则根据给的sed命令做处理,不匹配则丢弃,sed默认不修改源文件,只对模式空 间中的文件数据做处理,并打印到屏幕上。这里还是给大家找文件做演示
Sed基本用法:
Sed [options] ‘AddressCommand’ file ……
Options:
-n:静默模式,不再默认匹配显示模式空间中的内容
-i:直接修改原文件(建议不使用)
-e script -e script:可以同时执行多个脚本对文件进行处理
-f /path/to/script:使用以写好的脚本对文件进行处理
-r:使用扩展正则表达式
Address:
1、 startline,endline
例:1,100
$:表示最后一行
2、/regexp/:正则表达式
例:/oot/,匹配oot的行
3、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至到第一次被pattern2匹配到的行结束,这中间的所有行
4、linenumber:指定的行
5,、startline +N :从startline开始,向后的N+1行
Command:(d和p选项上面已经演示过,这里就不再做演示了)
d:删除符合条件的行
p:打印符合条件的行
a \string:在指定的行后面追加新行,内容为string
i \string:在指定的行前面追加新行,内容为string
w file:将符合条件的行保存至指定的文件中
r file:将指定的文件内容添加到符合条件的行处
s/pattern/string/修饰符:查找并替换,默认只替换每行中的第一个被模式匹配到的字符串
修饰符: g:全局替换,被匹配到的都替换;i:忽略字符大小写 ;br/>因为将/转义为#,而/又与s///表达式中/相同所以需要用\来转义才可以匹配,而下面的则不需要转义
s///,s###,[email protected]@@:替换与之不同字符串时不需要转义,例如匹配/时替换为#,用[email protected]/@#@g,不需要转义符
用与之不同的字符串匹配则不需要转移符
():使用正则表达式的分组,取值\1,\2,\3
&:引用模式匹配到的行,例将文件中love处理完成后尾部家r字符,使用sed ‘s#(l..e)#&r#’ filename
看一下是不是所有匹配到oot的单词后面都添加了r字符!
希望可以帮助到大家,谢谢!!!
以上是关于三剑客之sed的主要内容,如果未能解决你的问题,请参考以下文章