Búsqueda de sitios web

¿Cómo comprobar si un archivo contiene una cadena en PowerShell?


Mientras trabaja con archivos en PowerShell, es posible que reciba requisitos para verificar si un archivo contiene una cadena específica. PowerShell proporciona diferentes métodos para comprobar si un archivo contiene una cadena. Comprobemos cada método con ejemplos.

Para comprobar si un archivo contiene una cadena específica en PowerShell, puede usar el cmdlet Select-String con el parámetro -Pattern que especifica su término de búsqueda y el parámetro -Path para definir la ubicación del archivo. Para obtener una devolución simple de verdadero o falso, agregue el modificador -Quiet. Por ejemplo: $containsString=Select-String -Path “C:\MyFolder\MyFile.txt” -Pattern “searchTerm” -Quiet devolverá True si se encuentra “searchTerm”; de lo contrario, False. fuerte>

Estoy usando código de Visual Studio para ejecutar todos los scripts de PowerShell. También puede utilizar Windows PowerShell ISE para ejecutar los ejemplos.

Y para cada método, tomaré un archivo .txt.

Comprobar si un archivo contiene una cadena en PowerShell

Ahora, verifiquemos varios métodos de PowerShell para verificar si un archivo contiene una cadena específica.

1. Uso del cmdlet Select-String

El cmdlet Select-String en PowerShell es similar al comando grep en Unix o Linux. Puede utilizar este comando para buscar patrones de texto dentro de archivos. Utiliza la coincidencia de expresiones regulares para buscar patrones de texto en archivos y cadenas de entrada.

A continuación se muestra un ejemplo sencillo de cómo utilizar Select-String en PowerShell para comprobar si un archivo contiene una cadena específica.

Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs"

Este comando busca la cadena "powershellfaqs" en el archivo "MyFile.txt" ubicado en "C:\MyFolder". Si se encuentra la cadena, Select-String devolverá la línea o líneas que contienen la cadena, junto con información de contexto adicional.

La siguiente captura de pantalla muestra que este archivo contiene la cadena dos veces y muestra ambas líneas.

2. Busque una cadena en varios archivos en PowerShell

A veces, es posible que desees comprobar si hay algún problema en todos los archivos de la carpeta, y esto es fácil de hacer en PowerShell.

Para comprobar una cadena específica en varios archivos en PowerShell, puede combinar Get-ChildItem con Select-String:

Get-ChildItem -Path "C:\MyFolder\*.txt" | Select-String -Pattern "powershellfaqs"

Este script busca "powershellfaqs" en todos los archivos de texto dentro de "C:\MyFolder". Enumera los archivos que contienen la cadena, junto con las líneas donde se encontró la cadena.

3. Uso del interruptor de silencio

Este es otro método simple si solo desea saber si la cadena se presenta en el archivo o no en PowerShell. Simplemente devuelve verdadero o falso.

Si solo necesita saber si la cadena existe en el archivo y no necesita ver las líneas específicas, puede usar el modificador -Quiet en PowerShell. Esto devolverá un valor booleano: True si se encuentra la cadena y False en caso contrario.

$containsString = Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs" -Quiet
$containsString

Aquí puede ver el resultado en la captura de pantalla siguiente; devuelve verdadero tal como se presenta la cadena en el archivo.

4. Comprobar si existe una cadena con el operador -match

Aquí también hay otro método para verificar si existe una cadena dentro de un archivo: usar el operador -match en PowerShell. Primero, necesitarás leer el contenido del archivo en una variable y luego usar -match para buscar la cadena.

$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -match "powershellfaqs"

Este enfoque es útil cuando desea realizar operaciones adicionales en el contenido del archivo después de verificar la cadena.

5. Usando el método .Contains()

Este es otro método simple para verificar si una cadena contiene un archivo en PowerShell. En PowerShell, puede utilizar el método .Contains() en un objeto de cadena. Después de leer el archivo en una variable, puede verificar si la cadena contiene el término especificado.

$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$containsString = $content.Contains("powershellfaqs")

Tenga en cuenta que .Contains() distingue entre mayúsculas y minúsculas. Para una búsqueda que no distingue entre mayúsculas y minúsculas, puede convertir tanto el contenido como el término de búsqueda al mismo caso usando .ToLower() o .ToUpper().

Aquí está el script de PowerShell para búsquedas que no distinguen entre mayúsculas y minúsculas.

$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$lowercaseContent = $content.ToLower()
$containsString = $lowercaseContent.Contains("powershellfaqs".ToLower())

6. Uso del operador -like con comodines

En PowerShell, el operador -like le permite utilizar comodines para la coincidencia de patrones. Esto puede resultar útil cuando desea comprobar si una cadena contiene una palabra o patrón específico.

$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -like "*powershell*"

Los asteriscos * son comodines que representan cualquier número de caracteres. Este comando devolverá True si se encuentra "powershell" en cualquier parte del contenido.

7. Usar expresiones regulares

En PowerShell, también puede utilizar expresiones regulares para realizar una búsqueda de coincidencia de patrones. Puede utilizar expresiones regulares con Select-String. Esto le permite buscar patrones complejos dentro del texto.

Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershell\w+"

En este ejemplo, \w+ es una expresión regular que coincide con uno o más caracteres de palabra inmediatamente después de "powershell".

Conclusión

PowerShell proporciona varios métodos para comprobar si un archivo contiene una cadena o patrón específico. En este tutorial de PowerShell, he explicado con ejemplos cómo comprobar si un archivo contiene una cadena usando los siguientes métodos:

  1. Uso del cmdlet Seleccionar cadena
  2. Busque una cadena en varios archivos en PowerShell
  3. Usando el interruptor -Quiet
  4. Comprobar si existe una cadena con el operador -match
  5. Usando el método .Contains()
  6. Usando el operador -like con comodines
  7. Usando expresiones regulares

Artículos relacionados