如果第一个注释包含特定的字符串,sed正则表达式删除php文件的第一个注释

时间:2015-05-22 17:01:27

标签: php git sed

我正在运行商业开源CRM,这对于保留在VCS中是一件痛苦的事。在每个文件的顶部都没有"开源" ...他们会像这样写一个copywrite:

/*********************************************************************************** * Copyright (C) 2011-2015 Company Inc. All Rights Reserved. * * blah blah blah that changes every so often * ******a variable number of stars*****************/

每当他们更改版权文本/日期时,我看到的每个文件都会在git中更改。

所以我的问题 我如何做到这一点(https://stackoverflow.com/a/22171275/140541)将删除版权阻止...只是因此我不必在我的git中看到它并且在它改变时不必担心它?

谢谢!

更新问题。

我真的需要一个sed语句来解决这个问题:

<?php 
/***************************************************************
 * Copyright (C) 2011-2015 Company Inc. All Rights Reserved.
 *
 * blah blah blah that changes every so often
 *
 ******************************/

some code 

/***
 * foo here
 */

进入这个:

<?php    
/***************************************************************
 * some text here
 ******************************/

some code 

/***
 * foo here
 */

但只有当文件中的第一条评论带有“#34;版权所有&#34;在它。

1 个答案:

答案 0 :(得分:1)

正如我反复说的那样 - sed不是涉及多行的任何事情。这就是awk被发明要处理的事情:

$ cat tst.awk
inCmt && /\*\// {
    if (cmt ~ /Copyright/) {
        sub(/\n.*/,"\n * some text here\n",cmt)
    }
    $0 = cmt $0
    inCmt=0
    done=1
}
!done && /\/\*/ { inCmt=1 }
inCmt { cmt = cmt $0 ORS; next }
{ print }

$ cat file1
<?php
/***************************************************************
 * Copyright (C) 2011-2015 Company Inc. All Rights Reserved.
 *
 * blah blah blah that changes every so often
 *
 ******************************/

some code

/***
 * foo here
 */

$ awk -f tst.awk file1
<?php
/***************************************************************
 * some text here
 ******************************/

some code

/***
 * foo here
 */

$ cat file2
<?php
/***************************************************************
 * blahblahbla (C) 2011-2015 Company Inc. All Rights Reserved.
 *
 * blah blah blah that changes every so often
 *
 ******************************/

some code

/***
 * foo here
 */

$ awk -f tst.awk file2
<?php
/***************************************************************
 * blahblahbla (C) 2011-2015 Company Inc. All Rights Reserved.
 *
 * blah blah blah that changes every so often
 *
 ******************************/

some code

/***
 * foo here
 */