我有一个很大的Python代码库。 我想了解一下
BaseClass
如何通过“grepping-out”子类的名称和类中的函数进行子类化,但仅限于从 SomeBaseClass 继承的类。
因此,如果我们有多个包含多个类的文件,并且其中一些类如下所示:
class SubClass_A(BaseClass):
def foo(self):
...
async def goo(self):
...
class AnotherClass:
...
class SubClass_B(BaseClass):
def foo(self):
...
async def goo(self):
...
如果我们对这段代码应用某种脚本,它将输出:
File: /path/to/file
class SubClass_A(BaseClass):
def foo(self):
async def goo(self):
class SubClass_B(BaseClass):
def foo(self):
async def goo(self):
同一个文件中可以有很多类,其中一些可能是基类。本质上,这就像在 IDE 中折叠代码行。
现在,我尝试使用 sed 来执行此操作,但我不是这方面的专家,并且 sed 将无法打印文件路径。 但是,我知道awk可以打印文件路径,但我不知道awk! 啊啊。
我想过编写一个 python 程序来做到这一点,但这个问题似乎是一个漂亮的 sed/awk 程序可以解决的问题。
感谢您的帮助。
使用任何 awk:
$ awk '/^class/{ f=/\(BaseClass)/ } f && $1 ~ /^(class|def|async)$/' file
class SubClass_A(BaseClass):
def foo(self):
async def goo(self):
class SubClass_B(BaseClass):
def foo(self):
async def goo(self):