sed 是 Linux 下的一种流编辑器(Stream Editor),用以处理编辑输入流(文件、管道等)。在使用时,sed 将输入流逐行读进一个叫做模式空间的缓存区,进行编辑处理后再输出。
sed 的命令语法如下
sed [options] ‘AddressCommand’ FILE
参数
-n 静默模式,不显示模式空间中的内容
-i 直接修改源文件
-e SCRIPT 执行脚本,可以同时执行多个( -e SCRIPT -e SCRIPT …)
-f /PATH/TO/SCRIPT/ 从文件读取脚本
-r 使用扩展正则表达式 在引号间,可以使用以下定址来决定处理哪些行
- StartLine,Endline 从startLine到Endline之间的行数,$代表最后一行
- /RegExp/ 成功匹配RegExp的行
- /Pattern1/,/Pattern2/ 第一次匹配Pattern1开始到第一次匹配Pattern2间的行
- LineNumber 指定行
- StartLine,+N 从StartLine开始向后N行
在定址之后,便可以用命令来决定如何处理刚刚选定的行
d: 删除符合条件的行
p: 显示符合条件的行
a \string: 在符合条件的行后追加内容为 string 的新行
i \string: ~前
r FILE 将指定文件的内容添加到符合条件的行后
w FILE 将地址指定的行另存到指定文件中
s/pattern/replacement 查找并替换,默认只替换每一行第一次被匹配到的字符串修饰符g: 全局替换i: 忽略大小写