Javaソースファイルがたくさんあり、ソース内の各クラスによって実装されているインターフェイスをリストしたいと思います。Javaソースファイルからインプリメントするインターフェイスを印刷する正規表現
クラスは
class SomeClass
implements
InterfaceC,
InterfaceD
{
だから、基本的に、私が持つことができる場合は、複数行で宣言されたクラスが存在し、
class MyClass implements MyInterfaceA, MyInterfaceB {
しかし1行で宣言されている場合に最良のケースがあります最初のimplements
文字列リテラルと最初の文字の間のすべてを取り込める正規表現{
、私は実装するインタフェースの名前を持っています。
私はgrep、pcregrep、sed、awkのようないくつかのツールを試してきましたが、最終的に動作するようなコマンドが1つありました。
pcregrep -M 'class[\s\S]*implements'
あなたが見ることができるように、私は言葉class
とimplements
間の出力すべてにしようとしていますし、私はimplements
と{
間の出力すべてに同じ表現を変更すると、コマンドが行
class SomeClass
implements
を出力ファイルには{
が非常に多く、または{
が特殊文字であるため、おそらく必要以上に出力します。
最初のimplements
と最初の{
の間にテキストを出力するにはどうすればよいですか?
サンプルinput.java
ファイル:GNU grepので