argumento de cadena múltiple del comando findstr DOS

argumento de cadena múltiple del comando findstr DOS
findstr /v "black"  File1.txt

El comando de DOS anterior mostrará el contenido de 'File1.txt' que no coincide con la cadena "negra".

¿Cómo modificar este comando si necesito filtrar las palabras "negro" y "blanco"?

Respuesta1

¿Cómo filtro las palabras "negro" y "blanco"?

El siguiente comando mostrará todas las líneas que contienen"black" NI "white":

findstr /v "black white" blackwhite.txt

El siguiente comando mostrará todas las líneas que contienen"black" O "white":

findstr "black white" blackwhite.txt

El siguiente comando mostrará todas las líneas que contienenEXACTAMENTE "black white":

findstr /c:"black white" blackwhite.txt

El siguiente comando mostrará todas las líneas que contienen"black" Y "white":

findstr "white" blackwhite.txt | findstr "black"

Notas:

  • Cuando la cadena de búsqueda contiene varias palabras, separadas por espacios, findstrdevolverá líneas que contengan cualquiera de las palabras (O).

  • Una búsqueda literal ( /C:string) revertirá este comportamiento y permitirá buscar una frase u oración. Una búsqueda literal también permite buscar caracteres de puntuación.

Archivo de datos de ejemplo (blackwhite.txt):

red
black
white
blue
black white
black and white

Salida de ejemplo:

F:\test>findstr /v "black white" blackwhite.txt

red
blue

F:\test>findstr "black white" blackwhite.txt
black
white
black white
black and white

F:\test>findstr /c:"black white" blackwhite.txt
black white

F:\test>findstr "white" blackwhite.txt | findstr "black"
black white
black and white

Otras lecturas

Respuesta2

Si necesita mostrar todas las líneas con las palabras "negro" o "blanco", elimine /v en su comando.

Pruebe: findstr white File1.txt o findstr black File1.txt o findstr "black white" File1.txt

El operando /V imprimirá todas las líneas que NO contengan su cadena de búsqueda.

Escriba findtr /? para obtener más información sobre cómo utilizar findtr.

Respuesta3

Quería agregar a esto para mencionar cómo usar findtr con stdout en Windows para búsquedas múltiples.

A continuación se explica cómo enumerar solo los nombres de las interfaces de red y sus direcciones IP:

ipconfig /all | findstr /i /L /c:"Ethernet" /c:"IPv4"

La documentación de Microsoftdetalla cada parámetro

  • /iIgnora el caso de los caracteres al buscar la cadena.
  • /lProcesa cadenas de búsqueda literalmente.
  • /c:<string> Utiliza el texto especificado como una cadena de búsqueda literal.

Respuesta4

Aquí hay otro ejemplo que utiliza un método de salida diferente, no solo una búsqueda de archivos directa. Por ejemplo, verifique el estado del puerto de red donde port = 98765y status = ESTABLISHED or LISTENING.

Por ejemplo, esto ejecuta un netstat cada cinco segundos, luego canaliza la salida de netstat a FIND (también podría usar FINDSTR), luego canaliza esos resultados a findstr para filtrar cuando el puerto está en un estado determinado (en este caso ESTABLISHED or LISTENING).

netstat -an 5 | find "98765" | findstr "ESTABLISHED LISTENING"

TCP    192.168.123.456:57349     10.10.12.34:98765 ESTABLISHED

información relacionada