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