我想返回文件中始终具有相同前缀但其余部分可能有所不同的行号。
是否可以仅使用库存 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
搜索的实例。strings
filename
注意:/N
“在匹配的每一行前打印行号”
要了解更多使用信息,请运行findstr /?