write variable txt results print crear archivo powershell

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.