Búsqueda de sitios web

PowerShell: use Select-String y excluya un patrón específico


Puede utilizar el cmdlet Select-String en PowerShell para buscar texto específico en cadenas y archivos.

A menudo, es posible que desee utilizar el cmdlet Select-String para seleccionar todas las líneas de un archivo que no contienen un patrón específico.

Puede utilizar los siguientes métodos para hacerlo:

Método 1: usar Select-String y excluir un patrón específico

Get-Content employees.txt | Select-String -pattern $my_pattern -NotMatch

Este ejemplo en particular recuperará todas las líneas del archivo llamado employees.txt que no contienen el patrón especificado en la variable $my_pattern.

Método 2: utilizar cadena de selección y excluir varios patrones específicos

Get-Content employees.txt | Select-String -pattern $my_patterns -NotMatch

Este ejemplo en particular recuperará todas las líneas del archivo llamado employees.txt que no contienen ninguno de los patrones especificados en la matriz $my_patterns.

El siguiente ejemplo muestra cómo utilizar cada uno de estos métodos en la práctica.

Ejemplo 1: utilizar una cadena de selección y excluir un patrón específico

Supongamos que tenemos un archivo llamado employees.txt en nuestro directorio actual que contiene los valores de ID de varios empleados de alguna empresa.

Podemos usar el cmdlet Get-Content para ver todas las líneas de este archivo:

Supongamos que queremos recuperar solo las líneas del archivo que no contienen el patrón "A00" en algún lugar del valor de ID del empleado.

Podemos utilizar la siguiente sintaxis para hacerlo:

$my_pattern = "A00"
Get-Content employees.txt | Select-String -pattern $my_pattern -NotMatch

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Tenga en cuenta que esto devuelve sólo las líneas del archivo que no contienen el patrón "A00" en algún lugar de la línea.

Ejemplo 2: utilizar cadena de selección y excluir varios patrones específicos

Supongamos que nos gustaría recuperar solo las líneas del archivo employees.txt que no contienen ninguno de los siguientes patrones en algún lugar del valor de ID del empleado:

  • A00
  • B14
  • C00

Podemos utilizar la siguiente sintaxis para hacerlo:

$my_patterns = @("A00", "B14", "C00")
Get-Content employees.txt | Select-String -pattern $my_patterns -NotMatch

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Observe que esto devuelve solo las líneas del archivo que no contienen uno de los tres patrones que especificamos.

Nota: Puede encontrar la documentación completa para el cmdlet Select-String en PowerShell aquí.

Artículos relacionados