¿Necesitas saber cómo usar PowerShell para leer un archivo de texto y reemplazar texto? Esto es lo que llamamos PowerShell Leer-Archivo de Texto.
¡No busques más! Este artículo del blog es para ti. Al final del post, te mostraré una función que construí para hacer tu vida mucho más fácil.
Reemplazar texto en un archivo con PowerShell es un proceso de tres pasos.
- Lectura del archivo
- Buscar y reemplazar la cadena
- Guardar cambios en el archivo.
Lectura del Archivo
Primero necesitarás leer el archivo. Vamos a crear uno con el cmdlet Set-Content
para tener uno con el que trabajar.
Para leer este archivo, puedes usar el comando Get-Content
. Puedes leer el archivo proporcionando una ruta de archivo de texto al parámetro Path
como se muestra a continuación.
Buscar y Reemplazar la Cadena
Ahora que tenemos el contenido del archivo en la memoria en una cadena, necesitamos buscar y reemplazar la cadena. Una forma de hacerlo es usar el operador -replace
. Este operador de PowerShell encuentra una cadena y la reemplaza por otra.
Usando el contenido del archivo de ejemplo, podemos proporcionar la cadena de búsqueda foo con la cadena de reemplazo bar lo que debería hacer que el contenido del archivo sea foo foo baz ahora.
Escribir en el Archivo
Ahora que tenemos el nuevo contenido del archivo guardado en $newContent
, podemos escribir este nuevo contenido de vuelta al archivo. Una forma de hacerlo es utilizando el comando Set-Content
.
El comando Set-Content
reemplaza todo el contenido de un archivo asignándole un nuevo valor.
Cuando ahora leas el archivo C:\file.txt con Get-Content
, verás que ahora contiene el nuevo contenido.
Manejo de Manijas de Archivos Abiertos
Los pasos que has seguido anteriormente funcionan… la mayor parte del tiempo. Sin embargo, encontrarás en el mundo real que no siempre resulta así.
Te darás cuenta de que ocasionalmente tendrás que lidiar con archivos que están abiertos en PowerShell mismo. Esto te impide escribir los nuevos contenidos de vuelta al archivo.
Para remediar esta situación de manija de archivo abierta, creé un flujo de trabajo simple que te permite crear primero un archivo de texto temporal en disco con los nuevos contenidos, eliminar el archivo original y luego renombrar el archivo temporal.
Aquí tienes un ejemplo de cómo funciona:
A continuación se muestra un ejemplo de una función que creé llamada Find-InTextFile
que utiliza este enfoque combinado con la capacidad de buscar (no reemplazar) texto en un archivo.
Esta función también utiliza la sintaxis más potente de expresiones regulares para encontrar cadenas. Descubrirás que las expresiones regulares te permitirán realizar búsquedas más flexibles utilizando caracteres especiales como comillas simples, caracteres especiales y más.
Puedes ver también a continuación que estoy usando un bucle foreach para procesar varios archivos a la vez. Esto es útil si tienes un montón de archivos para procesar.
Recursos
Para obtener más información sobre el comando Set-Content
, consulta Set-Content: La forma de PowerShell de escribir en un archivo o una forma alternativa de escribir contenidos en un archivo, el comando Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/