2009-03-23 6 views
18

Ho bisogno di richiamare una serie di elementi di una matrice in PowerShell, ma fornire vari delimitatori tra gli elementi, quindi sto usando;Scrittura di schede su un file usando PowerShell

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

Ho bisogno di essere in grado di aggiungere le schede e caratteri di spazio, come si può vedere dal codice di cui sopra ho appena fatto questo con l'aggiunta fisicamente schede e gli spazi tra virgolette, ma sono sicuro che questo causerà problemi su tutta la linea.

Qual è il modo corretto di richiamare questi caratteri in un file? Ho letto da qualche parte che "'t" potrebbe essere usato, ma non sembra funzionare?

+1

Tradizionalmente si sarebbe \ t giusto? –

+0

@jeffamaphone: nelle lingue che usano '\' per caratteri di escape nelle stringhe, sì. Non tutte le lingue funzionano in questo modo. – Joey

risposta

48

È possibile utilizzare `t per un carattere di tabulazione in una stringa doppia citata. È inoltre possibile semplificare il precedente per:

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

La sequenza di escape di 't è ciò che stavo cercando. Nota: questo è l'apostrofo invertito. – Zarepheth

+2

Apostrofo rovesciato? È ASCII 96 (0x60). Va sotto i nomi [* backtick *, * backquote * e * grave accent *] (https://en.wikipedia.org/wiki/Grave_accent#Use_in_programming). –

26

per unire i campi nominati insieme a schede:

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

Questa è una bellissima fodera. Mi fa solo sorridere. –

+2

mentre ci sei: [string] :: join ("' t ", (0..3,15,17 |% {$ fields [$ _]})) – Wouter

+0

@Wouter, grazie. Cambiato '0,1,2,3' a' 0..3'. –