假设我有以下文件Test.java
:
import java.io.*;
/* test comment */
public class Test { /* another test comment */
...
...
...
}
Java程序可以包含单行//
注释和多行/* ... */
注释。我想要完成的是找到占据一行的/* ... */
注释并用注释替换它们。因此,替换后,应该如下所示:Test.java
//
Test.java
import java.io.*;
// test comment
public class Test { // another test comment
...
...
...
}
我尝试sed
通过执行以下操作来做到这一点:
sed -ri 's//\* ([.]*[ ]*) \*//// \1/' Test.java
然而,这似乎并没有改变任何事情。因此,我想知道如何在保持行的其余部分不变的情况下替换注释?我不确定如何实现这种行为。我认为我的正则表达式不知何故关闭了,但我不完全确定为什么。任何反馈或建议将不胜感激。
答案1
这将做到这一点:
sed 's_/\*\(.*\)\*/_//\1_' <Test.java
其工作方式如下:
- 我使用 the
_
作为分隔符,这样我就不必转义/
字符 /\*
'/*' 与(转义 *)匹配\(
我记得上面使用和之间的东西\)
- 然后替换为'//'(无需转义)和记住的内容
\1
一旦您确认它满足您的要求,只需添加-i
并删除
<
:
sed -i 's_/\*\(.*\)\*/_//\1_' Test.java
答案2
我怀疑你的第二个要点是:
'/*' is matched with /\* (escaping the *) and '*/' is matched with \*/