1

我是新手sed,我无法使用它来删除所有 ';' C++ 文件注释中的字符,即开始或包含字符串“//”的行(我已经将“/* ... */”注释转换为“// ...”注释)。

例如 :

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

我想拥有:

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

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

********* 编辑 *********

这是一个分两步使用 SED 的解决方案。答案中也提供了带有 AWK 的解决方案。

  1. 将所有评论放在新行上:sed 's/\/\//\n\/\//g'
  2. 消除 ';' 仅在以 "//" 开头的行上:sed '/^\/\// s/;//g'
4

1 回答 1

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
于 2016-07-29T10:30:17.857 回答