2011-10-26 312 views
11

我正在處理PowerShell 1.0中的製表符分隔的文本文件(ANSI),由於某些原因,我無法使用拆分功能將文件中的文本拆分爲多個字段。下面的代碼總是返回1,儘管在文件的每一行中有5個值由tab分隔。PowerShell 1.0中使用字符串拆分選項卡字符

$f = get-content ‘users.txt’ 
foreach ($line in $f) 
{ 
    $fields = $line.split('\t') 
    $fields.count | Out-Host 
} 

我測試了與其他分隔符,如管道,逗號分割和它沒有工作的問題。

+0

向我們展示你的文本文件的內容,是在一行上的一切嗎? – 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