批次傳回符合子字串的行號

批次傳回符合子字串的行號

我想返回文件中始終具有相同前綴的行號,但其餘部分可能會有所不同。

是否可以僅使用現有的 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 /?

相關內容