
Estoy intentando dividir un documento de texto en Powershell basado en una nueva línea. El script funcionó bien al dividir en un ',' pero ahora lo cambié para usar [Environment]::NewLine y parece que solo selecciona la última línea.
Esta es la parte del script que debería dividirse mediante una nueva línea:
Get-Content C:\Bindings.txt | Foreach-Object{
$hostHeaders = $_.Split([Environment]::NewLine,
[StringSplitOptions]::RemoveEmptyEntries)
}
El documento .txt se ve así:
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
¿Alguna idea sobre cómo puedo dividirlo en la Nueva línea y no solo ver la última línea o me falta algo?
Respuesta1
Tengo 3 métodos para ti.
He preparado un archivo .txt
(Get-Content C:\temp\Bindings.txt)
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Y ahora 3 métodos.
(Get-Content C:\temp\Bindings.txt) -split"`r`n"
(Get-Content C:\temp\Bindings.txt) -split "[Environment]::NewLine"
(Get-Content C:\temp\Bindings.txt).Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)
el resultado es asi
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Respuesta2
No necesitas hacer nada. El comportamiento predeterminado de Get-Content con un archivo de texto es dividir en la nueva línea y devolver una matriz de cadenas:
PS C:\...\Can Delete 3>Get-Content data.txt
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
PS C:\...\Can Delete 3>$object = Get-Content data.txt
PS C:\...\Can Delete 3>$object.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\...\Can Delete 3>$object.count
3
PS C:\...\Can Delete 3>$object[0]
http:*:80:test.com
PS C:\...\Can Delete 3>$Object | Get-Member
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
...