如何用文件中的sed替换多行注释

时间:2014-01-19 10:50:39

标签: linux sed awk

我有各种类型的文件php html xml,其中copyright通知包含在top或顶部2-3行之后

/**
 * Copyright (c)  2014
 * All rights reserved.
 * bla bla many lines like this
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

现在我要从所有文件中删除所有文本。

如何使用sed删除。

我只知道基本sed,但我不知道如何处理多线

2 个答案:

答案 0 :(得分:3)

$ cat file
1
2
/**
 * Copyright (c)  2014
 * All rights reserved.
 * bla bla many lines like this
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
3
4
/* and here is another comment
 * you presumably want to keep
 */
5
6

$ awk '/^\/\*/{c++} c!=1; /^ \*\//{c++}' file
1
2
3
4
/* and here is another comment
 * you presumably want to keep
 */
5
6

答案 1 :(得分:2)

中,您可以删除以/*开头并以*/结尾的范围,如下所示:

sed '/\/\*/,/\*\//d inputFile

有时候有点难以阅读,所以我会给出一个更清晰的例子:如果你想删除以abc开头并以{{1结尾的范围内的所有内容你要做的

xyz

sed '/abc/,/def/d' inputFile /*的情况相同,但*//必须转义。

类似的方法适用于文件。