一个sed的问题…………

一个sed的问题…………

这几天写一个配置脚本,要删除指定配置文件指定字符串开始的n行,查了半天sed发现sed都是指定第几行的操作,比如:
sed '2,$d' example-----删除example文件的第二行到末尾所有行。
sed '/test/'d example-----删除example文件所有包含test的行。
   我需要删除example文件包含test行开始的n行,有这样的sed命令没?难道要用awk?
   一段时间不用那些东西就忘得七七八八了……………………      
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=7686 $?=0] ; cat example
... ...
test
1
2
3
4
5
... ...
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=7686 $?=0] ; sed -n -e $'/test/{n;n;n;n;n;b;}\np' example
... ...
... ...
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=7686 $?=0] ; bye
      
三克油!

      
论坛又出现了一个BB      
[mgqw@localhost shell]$ cat test
... ...
test
1
2
3
4
5
... ...

查了半天手册然后再试验,发现不用-e得到的结果一样:
[mgqw@localhost shell]$ sed  -n $'/test/{n;n;n;n;n;b;}\np' test
... ...
... ...


把大括号里面最后那个b改成n效果也还是一样:
[mgqw@localhost shell]$ sed  -n $'/test/{n;n;n;n;n;n;}\np' test
... ...
... ...


  看了n久man sed和网络上七七八八的说明,还是对这个句子有些不明白,能否说明注解一下。
  不知头像来源,冒犯之处,还请版主多多包涵。

      
复制内容到剪贴板
代码:
IF (匹配 test) THEN
  n; /* 读入下一行 */
  n; /* 读入下一行 */
  n; /* 读入下一行 */
  n; /* 读入下一行 */
  n; /* 读入下一行 */
ELSE
  p; /* 打印当前行 */
ENDIF
      
谢谢。
   顺便鄙视下discuz,贴个东西上去搞得乱七八糟,只好不贴代码或者屏蔽discuz代码。      
sed  -n $'/test/{n;n;n;n;n;b;}\np' test
等同于
sed  -n $'/test/{n;n;n;n;n;n;}\np' test
等同于
sed  -n '/test/{n;n;n;n;n;n};p' test

我倒…………