2009-03-23 7 views
18

J'ai besoin d'un écho d'une série d'éléments d'un tableau dans PowerShell, mais je fournis différents délimiteurs entre les éléments, donc j'utilise;Ecriture d'onglets dans un fichier à l'aide de PowerShell

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

Je dois être en mesure d'ajouter des onglets et des espaces, comme vous pouvez le voir dans le code ci-dessus que je viens de faire cela en ajoutant physiquement des onglets et des espaces entre guillemets, mais je suis sûr que ce causera des problèmes sur toute la ligne.

Quelle est la bonne façon de répercuter ces caractères dans un fichier? J'ai lu quelque part que "t" pourrait être utilisé, mais cela ne semble pas fonctionner?

+1

Traditionnellement, il serait \ t droit? –

+0

@jeffamaphone: Dans les langages qui utilisent '\' pour l'échappement des caractères dans les chaînes, oui. Toutes les langues ne fonctionnent pas de cette façon. – Joey

Répondre

48

Vous pouvez utiliser `t pour un caractère de tabulation dans une chaîne entre guillemets. Vous pouvez également simplifier le dessus:

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

La séquence d'échappement 't est ce que je cherchais. Note: c'est l'apostrophe inversée. – Zarepheth

+2

Apostrophe inversée? C'est ASCII 96 (0x60). Il va sous les noms [* backtick *, * backquote *, et * accent grave *] (https://en.wikipedia.org/wiki/Grave_accent#Use_in_programming). –

26

Pour rejoindre les champs ensemble proposés avec des onglets:

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

C'est un beau paquebot. Ça me fait juste sourire. –

+2

pendant que vous y êtes: [string] :: join ("' t ", (0..3,15,17 |% {$ fields [$ _]})) – Wouter

+0

@Wouter, merci. Changé '0,1,2,3' à' 0..3'. –

Questions connexes