Zurückgeben der Zeilennummer einer übereinstimmenden Teilzeichenfolge im Batch

Zurückgeben der Zeilennummer einer übereinstimmenden Teilzeichenfolge im Batch

Ich möchte die Zeilennummer in einer Datei zurückgeben, die immer das gleiche Präfix hat, der Rest aber variieren kann.

Ist es möglich, eine Datei nur mithilfe von Standard-Windows-Komponenten und Befehlszeilenprogrammen zu durchsuchen, um die Zeilennummer des übereinstimmenden Teils zurückzugeben?

Ein Beispiel für die Zeile, nach der ich suche, ist:

</TR></TABLE><TABLE cellspacing... Weiterer Code, der variieren kann

Die Zeile in der Datei ist die Ausgabe eines Generators und daher bin ich nicht sicher, was sich bei jeder Generierung der Datei geändert hat oder ändern könnte.

Antwort1

FINDSTR wird verwendet, um in einer Datei nach Text zu suchen. Dabei wird jede Zeile ausgegeben, die der Suche entspricht. Die /NOption bewirkt, dass jeder übereinstimmenden Ausgabezeile die Zeilennummer vorangestellt wird LineNumber:FullTextOfMatchingLine.

Da Ihr Suchbegriff ein Leerzeichen enthält, müssen Sie diese /C:"search string"Option verwenden, da der Suchbegriff sonst als mehrere durch Leerzeichen getrennte Suchbegriffe interpretiert wird.

Sie möchten, dass die Suche nur den Zeilenanfang abgleicht, also benötigen Sie diese /BOption. Alternativ können Sie die /ROption hinzufügen, die Suche als regulären Ausdruck zu behandeln und dann den ^Zeilenanfangsanker am Anfang Ihrer Suchzeichenfolge zu verwenden.

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

Sie fragen nur nach der Zeilennummer, ohne den Text der entsprechenden Zeile. Mit FOR /F können Sie die gewünschte(n) Zeilennummer(n) extrahieren.

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

Wenn Sie den Befehl in eine Batchdatei einfügen, müssen Sie die Prozente verdoppeln:

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

Antwort2

Verwenden Sie findstr /N strings filenamees, um nach Vorkommen von stringsin der Datei zu suchen filename.

Hinweis: /N„Druckt die Zeilennummer vor jeder übereinstimmenden Zeile“

Für weitere Informationen zur Nutzung führen Siefindstr /?

verwandte Informationen