在 file.txt 行中搜索 text1 AND text2

Search for text1 AND text2 in a line of file.txt

我正在尝试 return 仅针对包含通过 cmd 匹配文本的行的结果。

在这种情况下,该行必须在 "Name" 和 "Surname" 中匹配。

仔细阅读 http://ss64.com/nt/findstr.html,并尝试了第一个示例

findstr "James Henry" sam.txt >sam2.txt

不幸的是,这也是 return 所有只包含 James 和 Henry 的行。只有包含 "James" 和 "Henry" 的行应该被 returned.

示例行应该 returned

詹姆斯·埃德加·亨利 228559

不应 returned

的示例行

詹姆斯·彼得斯 148825

感谢任何帮助

使用 /C 开关进行文字字符串搜索:

findstr /C:"James Henry" sam.txt >sam2.txt

如果您想要不敏感的搜索,您可能还需要指定 /I

这在findstr /?中有描述:

Use spaces to separate multiple search strings unless the argument is prefixed with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or "there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for "hello there" in file x.y.


好的,看了你修改后的问题,感觉你需要用正则表达式了:

findstr /R "James.*Henry" sam.txt >sam2.txt

如果您还需要查找像 "Henry Tiberius James" 这样的名称,那么我建议您使用搜索文件:

findstr /R /G:search.txt sam.txt >sam2.txt

search.txt为:

James.*Henry
Henry.*James

或者使用更好的脚本语言,如 PowerShell。

如果您不能确定这两个词是否并列或顺序不确定,您将不得不分别搜索它们:

findstr /i "\<James\>" sam1.txt | findstr /i "\<Henry\>" sam2.txt

\<表示"start of a word",\>表示"end of a word, so you are sure, NOT to find a guy named "Henry Jamesson