2016-11-08 3 views
0

Betrachten Sie die ASCII-Textdatei test1.txt:Powershell -SPLIT auf Pipe-Zeichen

a,b,c 
d,e,f 

Und die folgende Powershell-Skript test1.ps1:

$input -split "`n" | ForEach-Object { 
    $row = $_ -split "," 
    $row[0] 
} 

Der Ausgang ist, wie excpected:

a 
d 

Wenn wir jedoch das Trennzeichen auf | alles Fa ändern ils wie in test2.txt:

a|b|c 
d|e|f 

und die folgenden Powershell-Skript test2.ps1:

$input -split "`n" | ForEach-Object { 
    $row = $_ -split "|" 
    $row[0] 
} 

Der Ausgang alle, aber leer ist. Warum schlägt die -split fehl?

+0

NB: Sie importieren csv, wie dies für das gleiche zu tun, ohne das Problem wie folgt verwenden können: import-csv test1.txt -Delimiter "|" -Kopf col1, col2, col3 | Wählen Sie Spalte1 – Esperento57

Antwort

1

Es scheint -split erwartet ein regulärer Ausdruck und somit müssen Sie das Rohr entkommen, wie in:

$row = $_ -split "\|" 

Oder geben Sie die SimpleMatch Option auf der Zeichenkette oder Zeichen aufzuspalten:

$row = $_ -split "|", 0, "SimpleMatch" 

Die 0 steht für MaxSubstrings: "Die maximale Anzahl der Teilstrings, standardmäßig alle (0)."

Quelle: http://ss64.com/ps/split.html
auch: Get-Help about_Split