
Estou tentando dividir um documento txt no Powershell com base em uma nova linha. O script funcionou bem ao dividir em um ',' mas agora eu mudei para usar [Environment]::NewLine parece estar apenas escolhendo a última linha.
Esta é a parte do script que deve ser dividida por nova linha:
Get-Content C:\Bindings.txt | Foreach-Object{
$hostHeaders = $_.Split([Environment]::NewLine,
[StringSplitOptions]::RemoveEmptyEntries)
}
O documento .txt tem a seguinte aparência:
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Alguma idéia de como posso dividi-lo na New Line e não apenas ver a última linha ou estou faltando alguma coisa?
Responder1
Eu tenho 3 métodos para você
Eu preparei um arquivo .txt
(Get-Content C:\temp\Bindings.txt)
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
E agora 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)
o resultado é assim
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Responder2
Você não precisa fazer nada. O comportamento padrão de Get-Content com um arquivo de texto é dividir na nova linha e retornar uma matriz de strings:
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
---- ---------- ----------
...