Powershell - notMatch

10
我希望从文件中选择所有不匹配指定模式的行; 我知道我必须使用select-string的-notMatch选项,但我无法理解它的使用方法。(我需要类似于GREP的-v功能的东西)任何示例都将非常有用。 提前感谢。

你要查找或避免的文件模式是什么? - Marc
我想在一个C源文件中搜索调用某个函数(在该文件中定义)的行,但要避免定义或注释了它的行(有//在前面)。select-string "temp.txt" -notMatch -pattern '(void|double|char|int) $f\(' - 55651909-089b-4e04-9408-47c5bf
$f 是函数的名称。 - 55651909-089b-4e04-9408-47c5bf
2
如果$f是一个保存函数名称的变量,你需要将字符串放在双引号中。使用单引号会创建一个字符串字面量。 - Rynant
2个回答

8

您不能使用以下内容:

-notmatch "(?<!(void|double|char|int)\s+|//.*)\b$f\b"

6

我认为你仍然希望使用match而不是notmatch。要排除函数返回类型或注释,您需要使用'负向先行断言'。也许这可以满足您的需求?

$f = 'my_function'
select-string test.txt -Pattern "(?<!(void|double|char|int)\s+|//.*)\b$f\b"
< p > 代码中的(?<!...) 表示如果在源文本中此时发现 '...',则不匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接