2009-03-23 17 views
18

Necesito repetir una serie de elementos de una matriz en PowerShell, pero proporciono varios delimitadores entre los elementos, así que estoy usando;Escribiendo pestañas en un archivo usando PowerShell

Add-Content -Path $tempInputDir\testoutput.log -value ($($fields[0]) + " "+ 
     $($fields[1]) + " " + $($fields[2]) + " " + $($fields[3]) + " "+ 
     $($fields[15]) + " " + $($fields[17])) 
} 

tengo que ser capaz de añadir pestañas y caracteres de espacio, como se puede ver en el código anterior acabo de hacer esto mediante la adición físicamente pestañas y espacios entre comillas dobles, pero estoy seguro de que esto causará problemas en el futuro.

¿Cuál es la forma correcta de hacer eco de estos caracteres en un archivo? Leí en alguna parte que "t" podría usarse, ¿pero eso no parece funcionar?

+1

Tradicionalmente se habría \ t ¿verdad? –

+0

@jeffamaphone: en idiomas que usan '\' para escapar de caracteres en cadenas, sí. No todos los idiomas funcionan de esa manera. – Joey

Respuesta

48

Puede usar `t para un carácter de tabulación en una cadena entre comillas dobles. También puede simplificar la anterior a:

"$($fields[0]) $($fields[1]) $($fields[2]) $($fields[3]) $($fields[15]) $($fields[17])" | Add-Content $tempInputDir\testoutput.log 
+2

La secuencia de escape 't es lo que estaba buscando. Nota: ese es el apóstrofo invertido. – Zarepheth

+2

¿Apóstrofo invertido? Es ASCII 96 (0x60). Va bajo los nombres [* backtick *, * backquote * y * grave acento *] (https://en.wikipedia.org/wiki/Grave_accent#Use_in_programming). –

26

para unirse a los campos nombrados junto con fichas:

[string]::join("`t", (0..3,15,17 | % {$fields[$_]})) 
+2

Es un hermoso trazador de líneas. Solo me hace sonreír. –

+2

mientras lo hace: [cadena] :: unir ("' t ", (0..3,15,17 |% {$ campos [$ _]})) – Wouter

+0

@Wouter, gracias. Cambiado '0,1,2,3' a' 0..3'. –

Cuestiones relacionadas