Manipulación de texto con PowerShell
Existen una serie de cmdlets para para manipular ficheros de texto Add-Content
, Clear-Content
, Get-Content
y Set-Content
. Además Out-File
puede crear un fichero de texto o escribir contenido.
Creando un fichero
Se pueden usar ambas, Add-Content
y Set-Content
, pero necesitan que se indique el contenido de texto.
$txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ut enim in libero vehicula viverra. Ut at enim quis justo lacinia euismod nec eget urna. Proin pharetra fringilla dolor, a auctor ligula rutrum aliquam. Duis molestie justo nec lacus varius, sed hendrerit elit tincidunt."
Set-Content -Path .\test1.txt -Value $txt
Add-Content -Path .\test2.txt -Value $txt
Out-File -FilePath .\test3.txt -InputObject $txt
Podemos usar Out-File
con un pipe, en este caso obtenemos los procesos en ejecución de la maquina local y redirigimos la salida con información a un fichero de texto:
Get-Process | Out-File -FilePath .\test4.txt
Si tratamos de hacer lo mismo con el cmdlet Set-Content
no funciona, debemos convertir los datos en cadena previamente con Out-String
:
Get-Process | Out-String | Set-Content -Path .\test6.txt
Vaciando el contenido
A veces es necesario conocer los datos del fichero, Get-ChildItem
retorna modo, última modificación, tamaño y nombre:
Get-ChildItem -Path .\test1.txt
Vaciar el contenido es muy sencillo con Clear-Content
, además preserva los permisos del fichero:
Clear-Content -Path .\test1.txt
Modificando el contenido
"texto de prueba" | Add-Content -Path .\test3.txt
Reemplazando contenido
(Get-Content .\test3.txt).replace('prueba', 'MyValue') | Set-Content .\test3.txt