Zwracanie numeru bielizny pasującego podciągu w partii

3

Chcę zwrócić numer wiersza w pliku, który zawsze ma ten sam prefiks, ale reszta może się różnić.

Czy można przeszukać plik przy użyciu tylko standardowych składników systemu Windows i narzędzi operacyjnych wiersza polecenia, aby zwrócić numer wiersza pasującej części?

Przykładem linii, której szukam, jest:

</TR></TABLE><TABLE cellspacing... Więcej kodów, które mogą się różnić

Linia w pliku jest wyjściem generatora, więc nie jestem pewien, co się zmieniło lub może się zmienić za każdym razem, gdy generuje plik.

Ted van Riel
źródło

Odpowiedzi:

1

FINDSTR służy do wyszukiwania tekstu w pliku, drukowania każdej linii pasującej do wyszukiwania. Ta /Nopcja powoduje, że numer linii jest dodawany do każdej pasującej linii wyniku jako LineNumber:FullTextOfMatchingLine.

Ponieważ szukany ciąg zawiera spację, musisz użyć tej /C:"search string"opcji, w przeciwnym razie wyszukiwany ciąg będzie interpretowany jako wiele wyszukiwanych terminów oddzielonych spacją.

Chcesz, aby wyszukiwanie pasowało tylko do początku linii, więc potrzebujesz tej /Bopcji. Alternatywnie możesz dodać /Ropcję traktowania wyszukiwania jako wyrażenia regularnego, a następnie użyj ^kotwicy początku linii na początku szukanego ciągu.

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

Pytasz tylko o numer linii, bez tekstu pasującej linii. Możesz użyć FOR / F, aby wyodrębnić żądane numery linii.

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

Jeśli umieścisz polecenie w pliku wsadowym, musisz podwoić procent:

@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A
dbenham
źródło
0

Służy findstr /N strings filenamedo wyszukiwania wystąpień stringsw pliku filename.

Uwaga: /N„Drukuje numer linii przed każdą pasującą linią”

Aby uzyskać więcej informacji o użyciu, uruchom findstr /?

Steven
źródło