
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
---- ---------- ----------
...