2009-03-23 5 views
18

PowerShell에서 일련의 배열 요소를 에코해야하지만 요소 사이에 여러 가지 구분 기호를 제공해야합니다. 난 그냥 물리적으로 큰 따옴표 사이에 탭과 공백을 추가하여 이런 짓을 한 이상PowerShell을 사용하여 파일에 탭 쓰기

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

나는 당신이 코드에서 볼 수 있듯이, 탭과 공백 문자를 추가 할 수 있어야하지만이 확신 문제가 발생할 수 있습니다.

이러한 문자를 파일에 에코하는 올바른 방법은 무엇입니까? 나는 "t"가 사용될 수있는 어딘가를 읽었지 만 그것은 효과가없는 것 같습니까?

+1

전통적으로는 \ t 맞을 것 또한 위의 단순화 할 수 있습니다? –

+0

@jeffamaphone : 문자열에서 이스케이프 문자로'\ '를 사용하는 언어에서 그렇습니다. 모든 언어가 그런 식으로 작동하는 것은 아닙니다. – Joey

답변

48

큰 따옴표로 묶은 문자열의 탭 문자에`t를 사용할 수 있습니다.

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

'이스케이프 시퀀스는 내가 찾고 있던 것이다. 참고 : 이것은 역 아포스트로피입니다. – Zarepheth

+2

반전 된 아포스트로피? ASCII 96 (0x60)입니다. 그것은 [* backtick *, * backquote *, * grave accent *] (https://en.wikipedia.org/wiki/Grave_accent#Use_in_programming) 이름 아래에 있습니다. –

26

이 탭과 함께 후보에 필드에 가입하려면 :

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

그것은 아름다운 하나의 라이너입니다. 그냥 웃게 해줘. –

+2

당신이 그것을 보면서 : [string] :: join ("'t", (0..3,15,17 | % {$ fields [$ _]})) – Wouter

+0

@Wouter, 고마워. '0,1,2,3'을 '0..3'으로 변경했습니다. –

관련 문제