1

我有一些java代码:

/**
 * Some comment.
 */
void someFunction();

/**
 * Some comment.
 */
void anotherFunction();

如何写一行sed将上面的内容转换成

@Override
void someFunction();

@Override
void anotherFunction();

我能做的最好的就是删除评论

sed '/\/\*\*/,/\*\// d'

并手动插入@Override.

编辑:方法签名并不总是 void()。

4

3 回答 3

1

您可以使用 sed 在 '*/' 之后插入新行

sed '/\*\// a @Override' file

然后运行你的命令 -

sed '/\/\*\*/,/\*\// d' file

这样,您可以为每个方法添加 @override,即使它不是以 void 开头的。但是每种方法都应该有评论部分。

于 2013-09-25T22:40:51.930 回答
1

如果您也可以使用awk,这可以使它:

$ awk '/\/\*/ {p=0; next} /\*\// {p=1; print "@Override"; next}p' file
@Override
void someFunction();

@Override
void anotherFunction();

@Override
char Bla();

对于给定的文件

/**
 * Some comment.
 */
void someFunction();

/**
 * Some comment.
 */
void anotherFunction();

/**
 * Some comment.
 */
char Bla();
于 2013-09-25T22:36:21.500 回答
1

以下是如何通过单次 sed 执行此操作:

sed '/\/\*\*/,/\*\// {s/.*\*\/.*/@Override/p; d}'

大括号内的命令只会针对作为注释一部分的行运行,并且s/.*\*\/.*/@Override/p只会匹配注释的结尾,然后@Override根据需要打印。

于 2013-09-25T22:43:11.107 回答