我有大约300个课程,他们现在需要实施Serializable
。我以为我可以使用find
和sed
来执行此操作。
通过查找标准工作
^public class.*{$
在其他作品中,找到包含开头Public Class
的行,有一些文字并以{
结尾
现在我要更换它,以便结尾实际上是
implemenets MyInterface {
之前会是
public class MyClass {
和
public class MyClass2 {
,输出为
public class MyClass implements MyInterface {
和
public class MyClass2 implements MyInterface {
我一直在查找反向引用,但它们似乎在我正在测试的Notepad ++中表现得很有趣。
任何提示都会很棒。
由于
答案 0 :(得分:2)
你可以试试下面的sed命令,
$ echo 'public class MyClass {' | sed '/^public class.*{$/s/{$/implements MyInterface {/'
public class MyClass implements MyInterface {
OR
$ echo 'public class MyClass {' | sed 's/^\(public class.*\){$/\1implements MyInterface {/'
public class MyClass implements MyInterface {
答案 1 :(得分:2)
使用此sed -r
:
sed -r 's/(public +class +\S+ *)\{/\1 implements MyInterface {/' File.java
如果java文件已经有implements MyInterface
,这将跳过替换。但是在Java类声明中,可能存在许多基于正则表达式的简单查找/替换失败的情况。