这一定是个愚蠢的问题,但我找不到答案..我正在使用Windows Grep。
我想找到包含String1 AND string2 AND String3
的文件谢谢!
修改
我已尝试使用此answer的正则表达式,但windows grep显示错误..
(?=匹配这个表达式)(?=匹配这个)(?=哦,这个)
编辑2:
谢谢@brianadams和@MC ND的答案!我会检查awk,因为它似乎是windows grep的一个很好的替代品。由于问题是关于windows grep,我认为最好是让它开放以查看是否有人知道答案..
再次非常感谢你的回答!
答案 0 :(得分:2)
从here
下载Windows awk然后这样做
C:\> awk "/string1/&&/string2/&&/string3/{print}" myFile.txt
优于grep
或findstr
EDIT 如果要在文件中的任何位置找到所有3个字符串,请将RS =“\ 0”传递给awk。这将要求awk读入整个文件
C:\> awk "BEGIN{RS=\"\0\"}/string1/&&/string2/&&/string3/{print FILENAME;exit}" myFile.txt
答案 1 :(得分:1)
通常,对于复杂的搜索条件,我建议使用grep
,但在这种情况下,搜索整个文件的字符串,findstr
可能是更好的选择(或不是,请参阅{{3} })
无论如何,假设您的文件不会与findstr
限制发生冲突,其中一个特征是它能够从控制台/管道中检索应该搜索字符串的文件列表。所以,在你的情况下,你需要像
findstr /l /c:"string1" /m files*.* | findstr /l /c:"string2" /m /f:/ | findstr /l /c:"string3" /m /f:/
其中/l
表示搜索是文字字符串,/c:"string"
要搜索的字符串,/m
仅返回文件列表,/f:/
从stdin检索文件列表在哪里搜索。
这样,每个findstr
只搜索从管道中前一个findstr
返回的文件列表。