我正在寻找一个 grep 模式来查找某些代码中某个单词的出现情况(如果重要的话,是 Python)。
我想忽略较长的单词、字符串或注释中的出现的情况(如果可能的话)。
所以如果我有这个 Python 代码:
Variable = 5
print(Variable)
MyVariablePlusOne = 6
description = "This is Variable"
# I love Variable
Variable
我想要一种只匹配前两行的grep 方法。
我正在寻找一个 grep 模式来查找某些代码中某个单词的出现情况(如果重要的话,是 Python)。
我想忽略较长的单词、字符串或注释中的出现的情况(如果可能的话)。
所以如果我有这个 Python 代码:
Variable = 5
print(Variable)
MyVariablePlusOne = 6
description = "This is Variable"
# I love Variable
Variable
我想要一种只匹配前两行的grep 方法。
使用任何 POSIX awk 仅给出您提供的示例输入(我不会试图猜测您可能拥有哪些其他代码结构组合):
上面假设“单词”是指任何字母数字或
_
字符的字符串,如果错误的话,调整正则表达式以适应。使用 GNU awk 来指定单词边界,您可以使用
/\<Variable\>/
而不是/(^|[^[:alnum:]_])Variable([^[:alnum:]_]|$)/
。我想不出一种安全地执行此操作的方法,尤其是不排除在字符串中提及变量名称,尤其是当代码是 python 时,因此有很多方法可以获得“字符串”。考虑:
但是也
等等。但是,这里的主要前提似乎是“
Variable
在我的文本文件中找到字符串,但前提是它位于行的最开头,或者前面有一个非空格和非字母数字字符”。如果是这样,这应该是一个好的开始:正则表达式查找字符串的开头
^
,或 (|
) 任何不属于字符类 (^[ ]
) 的字符。给定的类是\s
(空格) 和\w
(字母数字和-
)。结果是查找所有Variable
以行首或非空格和非单词字符开头的 。您可以扩展它以避免所有第一个非空格字符为 a 的行
#
:但这实际上只能作为您以后手动审查的一个起点。