variable - Insertar contenido en un archivo de texto en Powershell
powershell result to txt (3)
Este problema podría resolverse utilizando matrices. Un archivo de texto es una matriz de cadenas. Cada elemento es una línea de texto.
$FileName = "C:/temp/test.txt"
$Patern = "<patern>" # the 2 lines will be added just after this pattern
$FileOriginal = Get-Content $FileName
<# create empty Array and use it as a modified file... #>
[String[]] $FileModified = @()
Foreach ($Line in $FileOriginal)
{
$FileModified += $Line
if ($Line -match $patern)
{
#Add Lines after the selected pattern
$FileModified += "add text''
$FileModified += ''add second line text''
}
}
Set-Content $fileName $FileModified
Quiero agregar contenido a la mitad de un archivo de texto en Powershell. Estoy buscando un patrón específico, luego agrego el contenido después de él. Tenga en cuenta que esto está en el medio del archivo.
Lo que tengo actualmente es:
(Get-Content ( $fileName )) |
Foreach-Object {
if($_ -match "pattern")
{
#Add Lines after the selected pattern
$_ += "`nText To Add"
}
}
} | Set-Content( $fileName )
Sin embargo, esto no funciona. Supongo que porque $ _ es inmutable o porque el operador + = no lo modifica correctamente.
¿Cuál es la manera de agregar texto a $ _ que se reflejará en la siguiente llamada de contenido?
Qué tal esto:
(gc $fileName) -replace "pattern", "$&`nText To Add" | sc $fileName
Creo que eso es bastante sencillo. Lo único que no es obvio es el "$ &", que se refiere a lo que fue emparejado por "patrón". Más información: http://www.regular-expressions.info/powershell.html
Simplemente imprime el texto extra, por ejemplo
(Get-Content $fileName) |
Foreach-Object {
$_ # send the current line to output
if ($_ -match "pattern")
{
#Add Lines after the selected pattern
"Text To Add"
}
} | Set-Content $fileName
Es posible que no necesite el `` n` extra ya que PowerShell terminará con cada cadena por usted.