使用 sed 在 python 脚本中的特定行之前添加包含注释和 URL 的两行

使用 sed 在 python 脚本中的特定行之前添加包含注释和 URL 的两行

在我的一些python-scripts 中,我放置了该行,if __name__ == '__main__'以便仅当脚本本身作为main-script 运行时才执行内容(而不是导入,请参阅这个解释)。

正如我最近发现的那样,我想使用 . 在该行之前添加两个信息丰富的注释行sed

我想要添加的行是:

# Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276
# -> Makes boolean "execute_in_script = True/False" obsolete

为了实现这一点,我设置了以下find--sed命令,该命令将自动在我的所有脚本中进行所需的更改python

find /home/andylu/Desktop/Python/Scripts/ -not -path "*.history*" -not -path '*__pycache__*' -type f -exec sed -i -Ee '/^if __name__ == '__main__':.*/i # Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276\n# -> Makes boolean "execute_in_script = True/False" obsolete' {} \;

不幸的是,它不起作用。它似乎正在运行,因为需要大约 30 秒才能完成,但控制台中没有任何输出,脚本中也没有任何更改python

我必须如何更正我的sed-string(例如/line of interest/i Lines to\nprepend before that line)才能使其正常工作?


有关如何在前面或后面添加行的文档sed:

这篇博文

答案1

感谢 @steeldriver 的评论,我可以使用以下命令进行操作:

andylu@andylu-Lubuntu-PC:~/$ find /home/andylu/Desktop/Python/Scripts/ -not -path "*.history*" -not -path '*__pycache__*' -type f -exec sed -i -Ee '/^if __name__ == '\''__main__'\''/i # Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276\n# -> Makes boolean "execute_in_script = True/False" obsolete' {} \;

必须将单引号'正则表达式字符串中的单引号替换为'\''as

单引号不能嵌套。

相关内容