
我正在嘗試根據換行符在 Powershell 中拆分 txt 文件。該腳本在分割“,”時工作正常,但現在我已將其更改為使用 [Environment]::NewLine 它似乎只選擇最後一行。
這是應該用換行符號分割的腳本部分:
Get-Content C:\Bindings.txt | Foreach-Object{
$hostHeaders = $_.Split([Environment]::NewLine,
[StringSplitOptions]::RemoveEmptyEntries)
}
.txt 文件如下所示:
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
關於如何讓它在新線上分割的任何想法,而不僅僅是看到最後一行,還是我錯過了一些東西?
答案1
我有3個方法給你
我準備了一個 .txt 文件
(Get-Content C:\temp\Bindings.txt)
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
現在有3種方法
(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)
結果是這樣的
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
答案2
你不需要做任何事。 Get-Content 對文字檔案的預設行為是在換行符處拆分並傳回字串陣列:
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
---- ---------- ----------
...