PowerShell - 在管道字符上拆分

Mar*_*arc 5 regex powershell split

考虑 ASCII 文本文件test1.txt:

a,b,c
d,e,f
Run Code Online (Sandbox Code Playgroud)

以及以下 Powershell 脚本test1.ps1:

$input -split "`n" | ForEach-Object {
    $row = $_ -split ","
    $row[0]
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,输出是:

a
d
Run Code Online (Sandbox Code Playgroud)

但是,如果我们将分隔符更改为|所有内容都会失败,如下所示test2.txt:

a|b|c
d|e|f
Run Code Online (Sandbox Code Playgroud)

以及以下 Powershell 脚本test2.ps1:

$input -split "`n" | ForEach-Object {
    $row = $_ -split "|"
    $row[0]
}
Run Code Online (Sandbox Code Playgroud)

输出几乎是空的。为什么会-split失败?

Mar*_*arc 6

它似乎-split需要一个正则表达式,因此您需要像这样转义管道:

$row = $_ -split "\|"
Run Code Online (Sandbox Code Playgroud)

或者指定在SimpleMatch文字字符串或字符上拆分的选项:

$row = $_ -split "|", 0, "SimpleMatch"
Run Code Online (Sandbox Code Playgroud)

0MaxSubstrings的代表:“最大子串数,默认为全 (0)。”

来源:http : //ss64.com/ps/split.html
另外:Get-Help about_Split