在 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
我正在尝试 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