请教:如何删除两段已知的字符之间的内容

请教:如何删除两段已知的字符之间的内容

如何删除两段已知的字符之间的内容(用shell or c都可以)
  比如:
  ..........
  ..........
  #mark 1
  ...
  ...
  ...
  #mark 2
  ..........
  ..........
  之间不知道有多少行,也不知道有多少字符,怎样删除?      
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[4019 0] %[/color] cat file
0
1
2
# mark 1
3
4
5
6
# mark 2
7
8
9
[color=blue]-(user@host:tty)-(tmp)-
[4019 0] %[/color] sed -n -e '/# mark 1/ { p; :next; n; /# mark 2/ { b done; }; b next; }; :done; p' file
0
1
2
# mark 1
# mark 2
7
8
9
[color=blue]-(user@host:tty)-(tmp)-
[4019 0] %[/color]
      
谢谢!不过没有怎么看懂你的意思,上面的p next 和 b是什么意思?      
可以用awk。
复制内容到剪贴板
代码:
/\#mark 1/{pd=1
           print $0
           next
}
/\#mark 2/{pd=0
           print $0
           next
}
{if(pd!=1)
   print $0
}
      
用 sed 太复杂了,还是 awk 的好