使用 findstr.exe 进行逻辑或比较

使用 findstr.exe 进行逻辑或比较

这可能是一个愚蠢的问题,但即使阅读文档我仍然不确定如何找到文件中包含“.cpp”的所有行或者“。H”。

有没有办法做到这一点?

例如(不起作用):

findstr /i .cpp,.h // , == OR

答案1

您可以通过用空格分隔表达式来进行逻辑或。

试一试,应该对你有用。

findstr /i "\.cpp \.h" myfile.txt

将两者括在引号内并用空格隔开。请注意,您还必须转义两者中的 .。

答案2

如果您需要包含短语(用空格分隔的单词),您可以这样做:

findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"

或者,如果您收到一些不需要的行,您/v也可以使用参数将其排除:

findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native

(已在 Windows 7 和 Windows 10 上测试)

答案3

如何形成OR逻辑取决于您要寻找的内容以及预期的未来变化(如果适用)。

如果它是一个没有空格的查询列表,您可以像这样快速而肮脏地执行:

findstr "thing1 thing2 thing3 thing4 thing5"如果存在上述任何一种情况,它将被评估为 true 并且退出 0。

如果您要查找的内容确实有空格,则必须使用findstr带有参数类型的文字搜索字符串/c:""。如果没有空格,您仍然可以使用此类型的参数。

/C:string Uses specified string as a literal search string.

然而你不能把文字和快速和肮脏结合起来。例如,这将不起作用:

findstr "thing1 thing2" /c:"thing3 thingy"

您需要将早期的参数转换为文字参数,如下所示:

findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"

因此,最好使用文字选项,因为它可以更好地与动态脚本配合使用。但是,如果它只是一组没有空格的静态查询,那么这种快速而肮脏的方法就足够了。

相关内容