🐚
【PowerShell 備忘録】コンソールの改行コード
環境:
> $PSVersionTable
Name Value
---- -----
PSVersion 7.1.3
PSEdition Core
GitCommitId 7.1.3
OS Microsoft Windows 10.0.19042
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
結論
コンソール内の改行コードは LF 。
検証
PowerShell 的には LF は `n
で、 CR は `r
で表現されます(markdown のインラインコードで `
を表示させるのって難しい…)。
> "aaa
bbb" -match "`n"
True
> "aaa
bbb" -match "`r"
False
> "aaa
bbb".IndexOf("`n")
3
> "aaa
bbb".IndexOf("`r")
-1
念のため正規表現でも再確認。
> "aaa
bbb" -match "\n"
True
> "aaa
bbb" -match "\r"
False
スクリプトブロックも同じ扱いのようで安心ですね。
> $b = {
1..5|% {
"Number is: {0}" -f $_ | echo
}
}
> & $b
Number is: 1
Number is: 2
Number is: 3
Number is: 4
Number is: 5
> $b.ToString() -match "`n"
True
> $b.ToString() -match "`r"
False
> $b.ToString().IndexOf("`n")
0
> $b.ToString().IndexOf("`r")
-1
PSReadline からコンソール上に表示されている複数行をパースしようとして、毎回改行コードについて調べていたので整理しました。
個人用の備忘録です。
Discussion