2016-11-08 2 views
0

は、ASCIIテキストファイルtest1.txtを考えてみましょうパイプ文字に-splitPowerShellは

a 
d 

ただし、セパレータを|に変更するとtest2.txtのようにILS:

a|b|c 
d|e|f 

そして、次のPowerShellのスクリプトtest2.ps1

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

出力はすべてが、空です。 -splitが失敗するのはなぜですか?

+0

NB:このようなあなたの問題もなく同じことを行うためにあなたは、このようにインポートCSVを使用することができます。import-csvファイルtest1.txtという-Delimiter "|" - ヘッダーcol1、col2、col3 | col1を選択 – Esperento57

答えて

1

それは-splitはあなたのようにパイプをエスケープする必要があるため、正規表現と見込んでいるようだ:

$row = $_ -split "\|" 

またはリテラル文字列または文字に分割するSimpleMatchオプションを指定:

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

0はMaxSubstringsの略です: "サブストリングの最大数、デフォルトではすべて(0)"

出典:またhttp://ss64.com/ps/split.html
Get-Help about_Split