如何使用 sed 和/或 awk 折叠 python 代码?

问题描述 投票:0回答:1

我有一个很大的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 程序可以解决的问题。

感谢您的帮助。

python awk sed
1个回答
0
投票

使用任何 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):
© www.soinside.com 2019 - 2024. All rights reserved.