在Perl中替换之前排除包含模式的行

时间:2014-03-06 15:51:21

标签: regex perl ack

我有以下代码从一组文件中替换版本字符串

ack --ignore-file=is:HISTORY.md -l --print0 '1\.1\.1' | xargs -0 perl -pi -e 's/1\.1\.1/1\.1\.2/g' 

现在,我意识到doxygen注释中有一些行也有这样的版本字符串。

/**
 * Generate Tag id from Tag name
 *
 * @since 1.1.1
 * @static
 * @access public
 *
 */

如何修改上述代码段,以便排除包含@since的行?

1 个答案:

答案 0 :(得分:4)

要排除@since行,您可以尝试使用此代替当前的perl替换代码:

!/\@since/ && s/1\.1\.1/1.1.2/g

甚至

/\@since/ || s/1\.1\.1/1.1.2/g