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 únicamente componentes estándar de Windows y utilidades operativas de línea de comandos para devolver el número de línea de la parte coincidente?
Un ejemplo de la línea que estoy buscando es:
</TR></TABLE><TABLE cellspacing...
Más código que puede variar.
La línea del 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.
Respuesta1
FINDSTR se utiliza para buscar texto en un archivo, imprimiendo cada línea que coincide con la búsqueda. La /N
opción hace que el número de línea se anteponga a cada línea de salida coincidente como LineNumber:FullTextOfMatchingLine
.
Dado que su cadena de búsqueda incluye un espacio, debe usar la /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 espacios.
Quiere que la búsqueda solo coincida con el comienzo de la línea, por lo que necesita la /B
opción. Alternativamente, puede agregar la /R
opción de tratar la búsqueda como una expresión regular y luego usar el ^
ancla de principio de línea al comienzo de su cadena de búsqueda.
findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"
Solicita solo el número de línea, sin el texto de la línea coincidente. Puede utilizar 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 coloca el comando en un archivo por lotes, deberá duplicar los porcentajes:
@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A
Respuesta2
Úselo 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 obtener más información de uso, ejecutefindstr /?