New Line 的 powershell 分割問題

New Line 的 powershell 分割問題

我正在嘗試根據換行符在 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
----             ----------            ----------
...

相關內容