3

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

Можно ли выполнить поиск файла, используя только стандартные компоненты Windows и служебные программы командной строки, чтобы получить номер строки соответствующей части.

Пример строки, которую я ищу:

</TR></TABLE><TABLE cellspacing... Больше кода, который может отличаться

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

2 ответа2

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
0

Используйте findstr /N strings filename для поиска экземпляров strings в имени filename .

Примечание: /N "Печатает номер строки перед каждой соответствующей строкой"

Для получения дополнительной информации об использовании запустите findstr /?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .