sed(Stream EDitor)简介
sed是一个流编辑器编辑器,本身是一个管道命令,主要以行为单位处理文本文件,可以将数据进行替换、删除、新增、选取等特定工作;sed并不会处理文本文件本身,而是每当处理一个文件时,按顺序逐行读取到模式空间(内存)中,而后在模式空间中完成编辑,把编辑的结果输出到屏幕上,接着处理下一行,反复操作,直到文件结尾。
模式空间:将读取的内容放在内存中的一块区域编辑,这些内存空间就称为模式空间
格式:
sed [options] ‘Address Command‘ FILE...
常用选项:
-i:直接修改源文件(慎用)
-r:使用扩展正则表达式,默认是基本正则表达式
-n:静默显示,默认sed会将STDIN的数据列出到屏幕上,使用-n后,则只有经过处理的行才会被显示出来
-e:同时执行多条命令;-e ‘command‘ -e ‘command‘
-f:指定一个sed脚本文件;-f FILENAME
地址定界:
1、Startline,Endline:要处理的起始行到结束行
$:表示最后一行
2、/REGEX/:使用正则表达式匹配
3、/pattern1/,/pattern2/:第一次被pattern匹配到的行至第二次被pattern匹配到的行
4、Line Number:指定的行
5、Startline +#:从Startline开始,向后的#行
常用命令:
d:删除符合条件的行
p:显示符合条件的行
a:在指定的行后面追加新行
a \String:String为新行的内容
\n:可以换行
i:在指定的行前面追加新行;i \String
r:将指定文件的内容添加到符合行的后面;r FILENAME
w:将指定地址范围内的行另存为指定的文件中;w FILENAME
s:查找并替换,默认之替换每行中第一次被匹配到的字符串
s/pattern/string/(///可以使用其他符号代替,###、@@@...)
g:代表全局替换;s/prttern/string/g
i:不区分大小写
&:可以使用后向引用,引用模式匹配到的整个字符串