第一种:[address]command
某些只能接受单个行地址,它们不能应用于某个范围的行,那么他的语法就是如下
第二种:[line-address]command
还可以用大括号进行分组以使其作用于同一个地址:如下
第三种:address{
command1;
command2;
command3;
}
注意最后一个大括号要独占一行,而且要开头,后面不能接空格,括号里多个命令处于同一行,多个命令之间要加分号,比如n;d,d前可以有空格或者tab
例如
#!/bin/sed
2 /root/{
3 s/root/555/g;
4 s/bin/666/g;
5
6 }
讲个小区别
第一个脚本
#!/bin/sed
/root/s/root/555/g;
/root/s/bin/666/g;
第二个脚本
#!/bin/sed
2 /root/{
3 s/root/555/g;
4 s/bin/666/g;
5
6 }
这两个脚本同时作用在/etc/passwd上
第一个脚本,root行的bin不会换掉,因为第二句已经找不到有root的行了,因为root已经被第一句命令都换成换成555.
而第二个脚本,root行的bin会换掉,因为只用的一个寻找命令,找到root的行后,会执行把root换成555的命令,然后在这行把bin换成666