返回批处理中匹配子字符串的行号

返回批处理中匹配子字符串的行号

我想返回文件中始终具有相同前缀但其余部分可能有所不同的行号。

是否可以仅使用库存 Windows 组件和命令行操作实用程序来搜索文件以返回匹配部分的行号。

我正在寻找的行的示例是:

</TR></TABLE><TABLE cellspacing... 更多代码可能会有所不同

文件中的行是生成器的输出,因此我不确定每次生成文件时发生了什么变化或可能发生什么变化。

答案1

FINDSTR 用于在文件中搜索文本,打印出与搜索匹配的每一行。该/N选项使行号被添加到输出的每个匹配行的前面,如下所示LineNumber:FullTextOfMatchingLine

由于您的搜索字符串包含空格,因此您必须使用该/C:"search string"选项,否则搜索字符串将被解释为由空格分隔的多个搜索词。

您希望搜索仅匹配行首,因此您需要该/B选项。或者,您可以添加选项/R以将搜索视为正则表达式,然后^在搜索字符串的开头使用行首锚点。

findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"

您仅要求提供行号,而不要求提供匹配行的文本。您可以使用 FOR /F 提取所需的行号。

for /f "delims=:" %A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do @echo %A

如果将命令放在批处理文件中,则必须将百分比加倍:

@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A

答案2

用于在文件中findstr /N strings filename搜索的实例。stringsfilename

注意:/N“在匹配的每一行前打印行号”

要了解更多使用信息,请运行findstr /?

相关内容