New Line 的 powershell split 问题

New Line 的 powershell split 问题

我正在尝试根据换行符在 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

我有三种方法

我准备了一个.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
----             ----------            ----------
...

相关内容