从python代码中删除函数及其定义

时间:2018-02-27 07:18:56

标签: text-processing awk sed

例如:旧文件

def MyFunction():

       some code inside MyFunction()

def MyFunction1():

       some code inside MyFunction1()

if __name__ == "__main__":

       some code inside

新文件

def MyFunction1():

       some code inside MyFunction1()

if __name__ == "__main__":

       some code inside

我想从多个文件中删除 MyFunction()及其中的代码 并且 MyFunction()后面没有 MyFunction1()。 MyFunction()可以位于代码中的任何位置,后跟任何代码。

1 个答案:

答案 0 :(得分:0)

awk '/^[[:alpha:]]/         { del=0 }
     /^def MyFunction\(\):/ { del=1 }
     del == 0' file.py

只要变量awk设置为零,此del程序就会通过所有内容。

如果找到MyFunction()定义的第一行,则变量设置为1,然后在找到行开头的字母字符行时重置为零。

这会从输入文件中删除MyFunction()定义。

在示例数据上运行此结果时的结果是

def MyFunction1():

       some code inside MyFunction1()

if __name__ == "__main__":

       some code inside