2011-10-26 9 views
11

Sto elaborando un file di testo con separatori di schede (ANSI) in PowerShell 1.0 e per qualche motivo non riesco a dividere il testo nel file in più campi utilizzando la funzione di divisione. Il codice sottostante restituisce sempre 1 anche se ci sono 5 valori separati da tab in ogni riga del file.Utilizzo di suddivisione di stringhe con caratteri di tabulazione in PowerShell 1.0

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

ho testato split con altri separatori come tubi, virgola e ha funzionato w/o problemi.

+0

ci mostrano il contenuto del file di testo, è tutto su una riga? – ProfessionalAmateur

risposta

20

Stai utilizzando il carattere di escape errato per la scheda. Prova a modificare:

$f = Get-Content "Users.txt" 

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

Funziona, grazie. Non è chiaro quale fosse la ragione per cui si usava questo tipo di personaggio di fuga invece di uno normale. –

+2

Quindi dovresti leggere l'aiuto per about_quoting_rules e about_escape_characters. – OldFart

+8

@kirill_l - perché \ è usato nei percorsi di Windows, quindi i percorsi dovranno essere specificati come 'c: \\ windows' se \ erano caratteri di escape. In un ambiente di scripting come PowerShell, i percorsi vengono utilizzati spesso e quindi il bisogno. – manojlds

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