我正在尝试从源代码中提取信息以创建供其他人使用的 API。我可以 grep 文件以获取具有常见签名的变量列表,但有些变量是多态的,所以我不能很好地清除它们。
例如:
public static Foo bar = new Foo(123, "Bar");
public static Foo baz = new Foo(222, "Baz");
public static FooBar fBar = new FooBar(135, "Foo", "Bar");
public static FooBaz fBaz = new FooBaz(256, "Baz", "Badger", "Baz");
我想简化为:
bar 123 Bar
baz 222 Baz
fBar 135 Bar
fBaz 256 Baz
目前,到目前为止,我已经这样做了:
grep "public static Foo" file.java | tr '(' ' ' | tr ')' ' ' | sed "s/public\ static\ //g"
这给了我这个:
Foo bar = new Foo 123, "Bar" ;
Foo baz = new Foo 222, "Baz" ;
FooBar fBar = new FooBar 135, "Foo", "Bar" ;
FooBaz fBaz = new FooBaz 256, "Baz", "Badger", "Baz" ;
当我尝试用 链接它时sed "s/Foo*\ //g"
,它不会删除 FooBar 和 FooBaz 这两个词。我怎样才能纠正这个?还是有更优雅的方式来实现我想做的事情?