删除所有出现的&#39 ;;'在S ++的C ++评论中

时间:2016-07-29 09:51:39

标签: sed comments character-replacement

我是sed的新手,我无法使用它删除所有&#39 ;;' C ++文件注释中的字符,即起始或包含字符串" //" (我已经将" / * ... * /"评论转换为" // ..."评论)。

例如:

// lorem; ipsum ; test
int a; // 1 ; 2 ; 3 ;

我希望:

// lorem ipsum  test
int a; // 1  2  3 

对于我的C ++文件中的任何评论。

********* EDIT *********

以下是SED分两步的解决方案。 AWK的解决方案也可以在答案中找到。

  1. 将所有评论添加到新行:sed 's/\/\//\n\/\//g'
  2. 删除';'仅限于以" //"开头的行:sed '/^\/\// s/;//g'

1 个答案:

答案 0 :(得分:0)

在AWK中很简单。创建文件 r.awk

function process(s) {
    gsub(";", "", s)
    return s
}

{
    sep = "//"; ns=length(sep)
    m = match($0, sep)
    if (!m) {print; next}

    body = substr($0,    1, m-1)
    cmnt = substr($0, m+ns     )

    print body sep process(cmnt)
}

用法:

awk -f r.awk input.file