从文件或者管道中读取一行处理一行,单行处理。把当前处理的行存储在临时缓冲区中,称为模式空间。处理完成后,将缓冲区的内容发送到屏幕,然后接着处理下一行,因为 sed 处理工作是一行一行处理的所以 sed 的性能很高,而 vim 打开很大的文件时就会很卡,因为 vim 是将所有数据统一加载到内存中,然后再打开,sed 就避免了这种情况。可以使用 -i 选项让其永久保存,也可以只使用模型空间。
-n # 不输出模型空间到屏幕-f # 从文件中读取编辑脚本-e # 多个模式同时进行匹配-r,-E # 使用扩展正则表达式-i.bak # 再编辑时先将文件备份然后编辑原文件
匹配地址格式
不给地址:对全文进行处理单地址:#:指定的行,$:最后一行/pattern/:被此处模式能够匹配的每一行都会按照后来定义的操作进行处理地址范围:#,# # 定义地址范围#,+# # #,继续往后多少行/pat1/,/pat2/ # 从第一个模式匹配到后一个模式#,/pat/ # 从 # 行匹配到 /pat/ 模式步进:~1~2 奇数行 从 1 每次增 2 ,匹配之后都是奇数行2~2 偶数行 从 2 每次增 2 ,匹配之后都是偶数行
命令:
p # 打印模式空间中的内容
Ip # 忽略大小写进行输出
d # 删除模式空间匹配的行
a [\]text # 在指定行后面追加文本,例:seq 5|sed '/3/atxt'
i [\]text # 在行前面插入文本,例:seq 5 | sed '/3/itxt'
r file # 读取指定文本的文本到存储空间匹配的行后,例:seq 5|sed '/3/r 1.txt'
w file # 输出模式空间中匹配的行输出到文件中保存,例:sed 'w 1.txt'
= # 为模式空中的行打印行号
! # 模式空间中匹配行取反处理
修饰符:
g # 行内全局替换
p # 对内容进行输出
w /PATH/FILE # 将替换成功的行保存至文件中
I,i # 忽略大小写
