findstr不能使用行的开头和结尾

时间:2015-09-04 20:31:32

标签: cmd findstr

我不明白; FINDSTR 用法很明确,但我无法让它发挥作用。我希望使用^$字符在文本文件上 FINDSTR 。这样:

findstr /C:"^test$" test.txt

我已经以多种方式制作了文件(test.txt)(全部在Windows上),并且没有尾随空格,但仍然没有找到匹配的行。

没有^$确实有效。

但它显然忽略了test之前和之后的任何字符或位置。

我想只匹配仅包含test的行,而不是其他任何内容。

为什么命令不能按预期工作?

2 个答案:

答案 0 :(得分:2)

findstr documentation of Microsoft确实不是最好的。 SS64 documentation for findstr要好得多,并且包含默认搜索类型:文字与正则表达式,解释 FINDSTR 默认情况下运行的文字以及正则表达式何时查找如果没有为/L明确定义正常表达的文字 OR /R

此任务有多种解决方案,只匹配区分大小写的整行,默认情况下可以更改为不区分大小写/I

第一个问题已由apandit提供。

%SystemRoot%\system32\findstr.exe /R /C:"^test$" test.txt

这会运行一个正则表达式查找,它只匹配并输出只包含单词test区分大小写的行,而不是预期的其他内容。

使用正则表达式查找的另一种解决方案是

%SystemRoot%\system32\findstr.exe "^test$" test.txt

是,没有/C:,并且由于包含元字符^$的搜索字符串,此查找将作为正则表达式查找执行。

另一个解决方案是使用文字查找,它应该只输出完全匹配指定搜索字符串的行。

%SystemRoot%\system32\findstr.exe /X /C:"test" test.txt

同样的结果也会产生这种文字搜索。

%SystemRoot%\system32\findstr.exe /B /E /L /C:test test.txt

实际上并不需要参数/L,因为在这种情况下,find默认为literal。但我认为,最好始终指定/L OR /R,以便明确 FINDSTR 以及执行查找的命令:文字或正则表达式查找。

答案 1 :(得分:0)

作为附加说明,findstr期望CR-LF的行尾。如果您的文件使用简单的换行符,则将无法正确处理$元字符。

相关问题