2011-10-26 28 views
11

Estoy procesando archivos de texto separados por tabulaciones (ANSI) en powershell 1.0 y por alguna razón no puedo dividir el texto en el archivo en múltiples campos mediante la función dividir. El código siguiente siempre devuelve 1 aunque hay 5 valores separados por tabulación en cada línea del archivo.Uso de cadenas divididas con caracteres de tabulación en PowerShell 1.0

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

Probé la división con otros separadores como la tubería, la coma y funcionó sin problemas.

+0

nos muestran el contenido de su archivo de texto, es todo en una sola línea? – ProfessionalAmateur

Respuesta

20

Está utilizando el caracter de escape incorrecto para la pestaña. Prueba este lugar:

$f = Get-Content "Users.txt" 

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

Funciona, gracias. No está claro cuál fue la razón detrás de usar este tipo de personaje de escape en lugar de uno normal. –

+2

Luego deberías leer la ayuda para about_quoting_rules y about_escape_characters. – OldFart

+8

@kirill_l - porque \ se usa en las rutas de acceso en las ventanas, por lo que las rutas tendrán que especificarse como 'c: \\ windows' si \ fueran caracteres de escape. En un entorno de secuencias de comandos como Powershell, los caminos se utilizan a menudo y, por lo tanto, la necesidad. – manojlds

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