我有一些java代码:
/**
* Some comment.
*/
void someFunction();
/**
* Some comment.
*/
void anotherFunction();
如何编写单行sed
将上述内容转换为
@Override
void someFunction();
@Override
void anotherFunction();
我能做的最好的事情就是用
删除评论sed '/\/\*\*/,/\*\// d'
并手动插入@Override
。
编辑:方法签名并不总是无效()。
答案 0 :(得分: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();
答案 1 :(得分:1)
您可以使用sed在'* /'
之后插入新行sed '/\*\// a @Override' file
然后运行您的命令 -
sed '/\/\*\*/,/\*\// d' file
这样,即使不以void开头,也可以为每个方法添加@override。但是每个方法都应该有评论部分。
答案 2 :(得分:1)
以下是单次传递sed:
的方法sed '/\/\*\*/,/\*\// {s/.*\*\/.*/@Override/p; d}'
大括号内的命令仅针对作为评论一部分的行运行,而s/.*\*\/.*/@Override/p
仅匹配评论的结尾,然后根据需要打印@Override
。