Devolviendo el número de lino de una subcadena a juego en Lote

3

Quiero devolver el número de línea en un archivo que siempre tiene el mismo prefijo, pero el resto puede variar.

¿Es posible buscar un archivo utilizando solo los componentes comunes de Windows y las utilidades operativas de línea de comandos para devolver el número de línea de la parte correspondiente?

Un ejemplo de la línea que estoy buscando es:

</TR></TABLE><TABLE cellspacing... Más código que puede variar.

La línea en el archivo es la salida de un generador, por lo que no estoy seguro de qué ha cambiado o puede cambiar cada vez que genera el archivo.

MegaXLR
fuente

Respuestas:

1

FINDSTR se utiliza para buscar texto en un archivo, imprimiendo cada línea que coincida con la búsqueda. los /N La opción hace que el número de línea se anteponga a cada línea coincidente de salida como LineNumber:FullTextOfMatchingLine.

Ya que su cadena de búsqueda incluye un espacio, debe usar el /C:"search string" opción, de lo contrario, la cadena de búsqueda se interpreta como múltiples términos de búsqueda delimitados por espacio.

Desea que la búsqueda coincida solo con el principio de la línea, por lo que necesita la /B opción. Alternativamente usted podría agregar el /R Opción de tratar la búsqueda como una expresión regular y luego usar la ^ ancla de inicio de línea al comienzo de la cadena de búsqueda.

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

Solo solicita el número de línea, sin el texto de la línea coincidente. Puede usar FOR / F para extraer los números de línea deseados.

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

Si pones el comando en un archivo por lotes, debes duplicar los porcentajes:

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

Utilizar findstr /N strings filename para buscar instancias de strings en el archivo filename.

Nota: /N "Imprime el número de línea antes de cada línea que coincida"

Para más información de uso, ejecute findstr /?

Steven
fuente