Возвращение номера строки совпадающей подстроки в пакетном режиме

Возвращение номера строки совпадающей подстроки в пакетном режиме

Я хочу вернуть номер строки в файле, который всегда имеет один и тот же префикс, но остальные могут отличаться.

Возможно ли выполнить поиск файла, используя только стандартные компоненты 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 /?

Связанный контент