2011-10-26 14 views
11

私はpowershell 1.0でタブ区切りのテキストファイル(ANSI)を処理しています。何らかの理由でファイル内のテキストをsplit関数を使用して複数のフィールドに分割できません。次のコードは、ファイルの各行にタブで区切られた5つの値がありますが、常に1を返します。PowerShell 1.0のタブ文字で文字列分割を使用

私はパイプ、コンマのような他のセパレータで分割してテストしましたが、問題なしで動作しました。

+0

は、1本のライン上のすべてのもので、私達にあなたのテキストファイルの内容を表示しますか? – ProfessionalAmateur

答えて

20

タブで間違ったエスケープ文字を使用しています。代わりにこれを試してみてください:

$f = Get-Content "Users.txt" 

foreach ($line in $f) { 
    $fields = $line.Split("`t") 
    $fields.Count | Out-Host 
} 
+0

それは、ありがとう、働く。このタイプのエスケープ文字を通常の文字の代わりに使用する理由は何だったのでしょうか。 –

+2

about_quoting_rulesとabout_escape_charactersのヘルプを読んでください。 – OldFart

+8

@kirill_l - \がウィンドウ内のパスで使用されているので、パスがエスケープ文字の場合は 'c:\\ windows'のように指定する必要があります。 Powershellのようなスクリプト環境では、パスが頻繁に使用されるため、必要があります。 – manojlds

0
(Get-Content -LiteralPath C:\temp\Users.txt) | ForEach-Object {$_.Split("'t")} | Set-Content -Path C:\temp\Results.txt