我正在尝试 grep 查找各种 python 编码反模式,以便可以在我们的构建过程中捕获它们。我很难利用 grep 在新行上进行匹配。
要搜索的反模式:
except:
pass
下面的模式在 Intellij 中工作得很好,但在与 grep 一起应用时不起作用。
except:\s+pass
请建议如何实现这一目标。
答案1
一种pcregrep
代表 Perl 兼容正则表达式 GREP 的解决方案。
pcregrep -M "^except:\n\s+pass$" file
where-M, --multiline
允许模式匹配多行。
正则表达式匹配行开头的文字:except:
,后跟换行符、0 个或多个空格(匹配尽可能多的空格)以及pass
行末尾的文字。