about_Join — PowerShell의 -join 연산자

about_Join — PowerShell의 -join 연산자

문자열 여러 개를 하나로 이어 붙이고 싶을 때가 있죠. 배열로 묶인 이름들을 한 줄로, 여러 줄을 한 줄로 만들고 싶을 때 PowerShell이 제공하는 도구가 있는데, 바로 -join 연산자예요. 여러 문자열을 받아 순서대로 이어서 하나의 문자열로 만들어 줍니다.

출처: about_Join — PowerShell 공식 문서

본문

-join이 하는 일

-join 연산자는 문자열 묶음(배열)을 받아 하나의 문자열로 이어 붙여요. 이어 붙일 때의 순서는 명령에 적어준 순서 그대로예요. 앞에 있는 문자열부터 차례로 결과 문자열에 붙는다고 보면 돼요.

문법

-join 연산자의 문법은 두 가지 형태가 있어요.

-join <String[]>
<String[]> -join <Delimiter>

첫 번째는 단항(unary) 형태로, 배열 전체를 기본 구분자로 이어 붙여요. 두 번째는 배열과 구분자를 -join 양쪽에 두고, 그 사이에 들어갈 구분자를 지정하는 형태예요.

매개변수

매개변수 설명
String[] 이어 붙일 문자열을 하나 이상 지정해요.
Delimiter 이어 붙인 문자열 사이에 넣을 문자를 하나 이상 지정해요. 기본값은 구분자 없음("")이에요.

단항 -join을 쓸 때 주의할 점

단항 -join 연산자(-join <string[]>)는 쉼표보다 우선순위가 높아요. 그래서 문자열을 쉼표로 구분해 그대로 넘기면, 첫 번째 쉼표 앞의 첫 번째 문자열만 join에 전달돼요. 배열 전체를 이어 붙이려면 문자열을 괄호로 감싸거나, 변수에 담아서 그 변수를 넘겨주면 돼요.

예시로 볼게요.

-join "a", "b", "c"
a
b
c

-join ("a", "b", "c")
abc

$z = "a", "b", "c"
-join $z
abc

-join "a", "b", "c"는 예상과 다르게 a 하나만 처리돼서 그대로 a가 나오죠. 반면 괄호로 감싼 -join ("a", "b", "c")는 세 문자열이 그대로 붙어 abc가 돼요. 변수에 담은 경우도 배열 전체가 전달되니 결과는 abc예요.

실제 예시로 익혀보기

이번엔 조금 더 실용적인 예시를 볼게요. 세 문자열을 그대로 이어 붙이면:

-join ("Windows", "PowerShell", "2.0")
WindowsPowerShell2.0

구분자를 지정하면 그 사이에 공백이 들어가요.

"Windows", "PowerShell", "2.0" -join " "
Windows PowerShell 2.0

구분자는 여러 글자도 쓸 수 있어요. 아래는 "OW"라는 두 글자 구분자로 세 문자열을 이어 붙인 예시예요.

$a = "WIND", "S P", "ERSHELL"
$a -join "OW"
WINDOWS POWERSHELL

WIND + OW + S P + OW + ERSHELL이 이어지면서 WINDOWS POWERSHELL이 되는 걸 확인할 수 있어요.

마지막으로, here-string(여러 줄 문자열)을 한 줄로 합치는 예시를 볼게요. here-string 자체는 문자열 하나라서, 줄들을 이어 붙이려면 먼저 줄 단위로 쪼갠 뒤 다시 join해야 해요. XML 파일을 here-string에 담아 보관했을 때 그 내용을 다시 한 줄로 되살리는 데 이 방법을 쓸 수 있어요.

$a = @'
a
b
c
'@

(-split $a) -join " "
a b c

(-split $a)로 줄 단위로 쪼갠 다음 -join " "로 공백을 사이에 두고 다시 이어 붙였네요. 결과는 a b c가 돼요.

더 알아보기